Java 如何使用JPA在2个表之间进行内部联接、左联接、右联接
如何编写在两个实体之间进行连接的JPA查询Java 如何使用JPA在2个表之间进行内部联接、左联接、右联接,java,mysql,jpa,jpa-2.0,Java,Mysql,Jpa,Jpa 2.0,如何编写在两个实体之间进行连接的JPA查询 EntityA @Id long id String field1 String field2 EntityB @Id String field1 @Id String field2 如何在JPQL中编写这样的连接 select * from entityA,entityB where entityB.field1 = entityA.field1 and entityB.field2 = entityA.field2 如果可以更改
EntityA
@Id
long id
String field1 String field2
EntityB
@Id
String field1
@Id
String field2
如何在JPQL中编写这样的连接
select * from entityA,entityB where entityB.field1 = entityA.field1
and entityB.field2 = entityA.field2
如果可以更改代码以在EntityA中包含对EntityB的引用,则可以使用以下方法:
CriteriaQuery<EntityA> cq = cb.createQuery(EntityA.class);
Root<EntityA> root = cq.from(EntityA.class);
Join<EntityA, EntityB> join = root.join(EntityA_.entityBs);
CriteriaQuery cq=cb.createQuery(EntityA.class);
Root=cq.from(EntityA.class);
Join-Join=root.Join(EntityA\uu.entityBs);
内部联接:
select * from entityA inner join entityB on entityA.field1 = entityB.field2
左外连接:
select * from entityA left outer join entityB on entityA.field1 = entityB.field2
更改实体并再次使用左连接而不是右连接:
select * from entityB left outer join entityA on entityA.field1 = entityB.field2
有用的职位:
所以更好的方法是条件查询,请参见: