JPA Criteria从连接返回单行

时间:2014-08-20 15:05:20

标签: java jpa join criteria

鉴于数据库关系:

sport-club table
================
id
...


player
======
id
sport-club-id (reference sport-club)
first-name
...

我希望找到所有名为“John”的体育俱乐部。

我写了以下JPA:

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<SportClub> query = cb.createQuery(SportClub.class);
Root<SportClub> sportClub = query.from(SportClub.class);
Join<Player> player = sportClub.join(Player_.sportClub);
query.where(cb.equal(player.get(Player_.firstName), "John"));

然而,由于加入,每个俱乐部的每个名叫约翰的球员都会返回一次体育俱乐部。我怎样才能让Criteria为每位球员返回一次俱乐部?

1 个答案:

答案 0 :(得分:0)

这比我想象的要简单得多。我只需添加:

query.distinct(true);

我花了几个小时毫无结果地尝试按照我的意愿进行加入。