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

领域模型:

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

@Entity class B{
  @Id int id;
}


与该域模型有关的问题是:对于特定的A,如何查找与关系disableForB不相关的所有B

最佳答案

我目前没有测试可用查询的环境,因此以下内容可能包含一些错误。无论如何,这对于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();

关于java - 如何用JPA 2.0标准以M:N关系表示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11414948/

10-12 01:26
查看更多