Java 如何使用JPA在2个表之间进行内部联接、左联接、右联接

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 如果可以更改

如何编写在两个实体之间进行连接的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中包含对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
有用的职位:

所以更好的方法是条件查询,请参见: