2010-06-09 50 views
0

我正在使用netbean 6.8 btw。
假設我有4個不同的表格:Company,Facility,ProjectDocument。所以關係是這樣的。一個公司可以有多個設施。一個設施可以有多個項目,一個項目可以有多個文件。JPA + EJB + JSF:如何設計複雜的查詢

Company
+ companyNum:PK
+ facilityNum:FK

Facility
+ facilityNum:PK
+ projectNum:FK

Project
+ projectNum:PK
+ drawingNum:FK

所以當我在netbean 6.8中創建Entity Class From Database時,我有4個以上述4個表格命名的實體類。所以如果我想要查看數據庫中的所有Document,那麼很容易。在我SessionBean,我這樣做:

@PersistenceContext 
private EntityManager em; 
List<Document> documents = em.createNamedQuery("Document.findAll").getResultList(); 

然而,這還不是全部我所需要的。假設我想知道來自特定Company的所有Document,或者來自特定Facility的來自具體Company的來自特定Project的所有Document。我對JPA + EJB + JSF是一個全新的新手。請幫助我。

回答

1

您的關係應使用@ManyToOne(例如在projects集合的Document)聲明,然後在JPA查詢中使用inner join,例如,選擇所有文件對於給定的項目:

select d from Document d inner join d.projects p where p.id = ? 
+0

你認爲你可以提供更多的示例代碼? – 2010-06-09 21:11:26