1

如何使用 JPA 2.0 Criteria 表达查询,该查询应获取与实体 B 不相关 (m:n) 的所有实体 A。

领域模型:

@Entity class A{
  @Id int id;
  @ManyToMany List<B> disableForB;
}

@Entity class B{
  @Id int id;
}

与此域模型相关的问题是:如何找到与特定A无关的所有内容?disableForBB

4

1 回答 1

1

我目前没有测试可用查询的环境,因此以下可能包含一些错误。这无论如何都是可行的isNotMember

B b ...
CriteriaQuery<Aa> cq = cb.createQuery(A.class);
ParameterExpression<B> param = cb.parameter(B.class);
Root<A> a = cq.from(A.class);
Expression<Collection<B>> disabledB = a.get("disableForB");
Predicate pred = cb.isNotMember(param, disabledB);
cq.select(a);
cq.where(pred);
em.createQuery(cq).setParameter(param, b).getResultList();
于 2012-07-10T15:23:31.303 回答