2012-08-02 25 views
2

我在我的項目(EclipseLink的供應商)使用JPA 2,我有以下問題:如何強制JPA(eclipselink)使用連接而不是獨立查詢?

當我執行下面的代碼:

em.createQuery("select t from " + entityName + " t where t.id = ?1" 
).setParameter(1, id) 
.setHint(QueryHints.REFRESH, HintValues.TRUE) 
.setHint(QueryHints.REFRESH_CASCADE, CascadePolicy.CascadeAllParts) 
.getSingleResult(); 

JPA產生噸的查詢來獲取所有依賴對象(即〜90個查詢來獲取實體)。 有沒有辦法強制JPA使用連接而不是獨立查詢?

回答

1

在您的查詢中,您可以使用joinfetch自行構建查詢。

因此,舉例來說,如果你的實體T具有

@OneToMany public List<RelatedEntity> things; 

那麼你的查詢就可以使用:

select t from entityName t join fetch t.things where t.id = ?1 

閱讀JPQL的文檔(Java持久化查詢語言)。