我对java中的Predicates不太熟悉,并试图谷歌找到我的问题的解决方案,所以欢迎任何帮助/提示。
所以这是:
在我的实体模型中,我有以下映射
public class Entity{
@ManyToMany
@MapKeyEnumerated(STRING)
private Map<A, B> partners = new HashMap<A, B>();
}
我如何制作谓词,让所有拥有合作伙伴的实体都能获得结果.B.id = 2?
答案 0 :(得分:1)
您可以在构建谓词时使用加入来执行此操作。
对于您的示例,它可能如下所示:
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery();
Root<entity> root = cq.from(Entity.class);
MapJoin<Entity, A, B> mapJoin = root.joinMap("partners");
Predicate predicate = cb.equal(mapJoin.get("id"), 2);
em.createQuery(cq.select(root).distinct(true).where(predicate));
(注:我没有测试此代码)