JPA için nispeten yeni, bu yüzden bir tür mimari sorum var. ı (yani birçok çalışanın bir bölüm için çalışmak) bir ilişki için pek çok tablo ÇALIŞAN ve BÖLÜMÜ var diyelim: JPA - varlık sınıfı özelliği olarak hesaplanan sütun?
EMPLOYEE
EMPLOYEE_ID
EMPLOYEE_NAME
DEPARTMENT_ID
DEPARTMENT
DEPARTMENT_ID
DEPARTMENT_NAME
yüzden Çalışan ve Bölümü için uygun varlıkları tanımlayabilirsiniz, hiçbir sorun yok. Ancak, tek bir görünümde böyle o bölüm için çalışanların sayısı, bir şeyle bölümlerin listesini görüntülemek istiyorum:
SELECT D.DEPARTMENT_NAME,
(SELECT COUNT(*) FROM EMPLOYEE E WHERE E.DEPARTMENT_ID = D.DEPARTMENT_ID) NUMBER_OF_EMPLOYEES
FROM DEPARTMENT D
Bunu kullanarak JPA gerçekleştirmek için doğru bir strateji nedir emin değilim. .. Gerek duyulduğunda yalnızca bir görünüm olduğu için, departman birimi için her zaman çalışan sayısını almak istemiyorum.
Hibernate'in @Formula'nın olası bir yaklaşım olabileceği görülüyor, ancak JPA standardıyla uyumlu değil.
Cevabınız için @MattR teşekkür ederiz. Bu çözüm bu basit örnek için işe yarayabilir. Ancak (a) DEPARTMENT tablosunun NAME'ye ek olarak başka birçok sütunu varsa ve açıkçası bunların hepsini yapıcıda listelemek istemiyorum ve (b) bunu hala Bölüm varlığı mülkiyeti olarak kullanmak istiyorum (LAZY getirisi ile) tür) sadece durumda başka bir yerde erişilebilir olması. – AndreiM
İyi bir soru, denemedim ama ben * düşünüyorum * yapıcıdaki varlık sınıflarını kullanabilirsiniz (böylece tüm varlık özelliklerini seçmeniz gerekmeyecekti). Eğer denemek için bir şans elde edersem, cevabımı güncelleştiririm ... yani, bir kurucu DepartmentEmployees (Departman, Tamsayı) vardı ve yeni DepartmentEmployees (D, count (E.id) SELECT kullanın bir DepartmentEmployees sınıf (demek) olabilir)) - tam olarak ne istemek değil ama daha yakın ... – MattR
Tamam Ben bu fazladan bir bilgi güncellendi, bu yüzden öğle yemeği üzerinde bu hakkında düşünüyordum. Önerilerden herhangi birini denerseniz veya daha iyi bir çözüm bulursanız, lütfen geri bildiriniz. – MattR