我陷入了一个问题,我无法找到如何使用 criteriaquery Out Out ofter Join >。我有两个表A_1和A_2
@Entity()
@Table(name = "A_1")
public class A1 {
private long id_1;
private long name;
private long city;
}
@Entity()
@Table(name = "A_2")
public class A2 {
private long id_2;
private long a_1_id_1;
private long name;
}
我必须找出A_1表中但不在A_2表中的所有条目。A_1表中的ID_1与A_1_ID_1 。
相同为此,我尝试查询:
select * from A_1 LEFT OUTER JOIN A_2 ON A_1.id_1 = A_2.a_1_id_1 where A_2.a_1_id_1 is NULL
我从查询中获得了预期的结果。但是我无法找到如何将其更改为代码,基本上是左OUT OUT JOIN PART 。我已经尝试了网络中的很多选择,但无法找到解决方案。
我的代码就是这样:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Tuple> query = cb.createTupleQuery();
Root<A_1> root1 = query.from_1(A_1.class);
Root<A_2> root2 = query.from(A_2.class);
List<Predicate> predicates = getPredicates(cb, root1, root1, request);
我无法决定如何使用它来获得所需的结果。预先感谢。
您可以尝试类似的东西 -
final Root<A_1> a1 = criteriaQuery.from(A_1.class);
Join<A_1, A_2> join1 = a1.join("joinColumnName", JoinType.LEFT);
Predicate predicate = criteriaBuilder.equal(A_2.<String> get("YOUR_COULMN"), value;
criteria.add(predicate);
criteriaQuery.where(predicate);
criteriaQuery.distinct(true);