2

私は Java の述語にあまり詳しくなく、問題の解決策を見つけるためにグーグルで検索しようとしました。そのため、ヘルプやヒントを歓迎します。

だからここにあります:

私のエンティティモデルには、次のマッピングがあります

public class Entity{
    @ManyToMany
    @MapKeyEnumerated(STRING)
    private Map<A, B> partners = new HashMap<A, B>();
}

partner.B.id = 2 を持つすべてのエンティティで結果を返す述語を作成するにはどうすればよいですか?

4

1 に答える 1

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));

(注: このコードはテストしていません)

于 2015-12-22T10:52:15.110 に答える