2012-06-27 7 views
0

Может ли несколько соединений быть условием?JPA Criteria API multiple collection join

final CriteriaBuilder builder = entityManager.getCriteriaBuilder(); 

CriteriaQuery<Game> query = builder.createQuery(Game.class); 

final Root<Game> game = query.from(Game.class); 
final ListJoin<Game, Store> store = game.join(Game_.stores); 
final ListJoin<Game, Category> category = game.join(Game_.categories); 

второе соединение (каталогом) делает результаты разными, даже если предикатов нет.

что с этим кодом?

ответ

1

Соединение является внутренним соединением по умолчанию. Таким образом, запрос будет выбирать только игры, в которых есть не менее 1 категории. Сделайте это левым соединением, и он выберет все игры (даже те, которые не имеют какой-либо категории).

Смежные вопросы