2014-02-26 36 views
0

如何寫一個JPA的查詢,使2個實體如何使內部聯接,左連接,使用JPA

EntityA 

@Id 

long id 

String field1 String field2 

EntityB 

@Id 

String field1 

@Id 

String field2 

我如何寫一個加盟像這之間的一個連接2臺之間右連接在JPQL

select * from entityA,entityB where entityB.field1 = entityA.field1 
and entityB.field2 = entityA.field2 

回答

1

如果你可以改變你的代碼,包括參考EntityB在EntityA您可以使用此:

CriteriaQuery<EntityA> cq = cb.createQuery(EntityA.class); 
Root<EntityA> root = cq.from(EntityA.class); 
Join<EntityA, EntityB> join = root.join(EntityA_.entityBs); 
0

內連接:

select * from entityA inner join entityB on entityA.field1 = entityB.field2 

LEFT OUTER JOIN:

select * from entityA left outer join entityB on entityA.field1 = entityB.field2 

更改實體和再次使用左連接,而不是右連接:

select * from entityB left outer join entityA on entityA.field1 = entityB.field2 

有用的帖子:http://chrisiecorner.blogspot.com/2012/12/jpa-and-outer-joins.htmlRIGHT JOIN in JPQL

所以更好的方法是標準查詢,參見:Querying Relationships Using Joins