JPA критерии для поиска сущностей на основе значений свойств дочерних сущностей? (Дубликаты присоединений) - PullRequest
0 голосов
/ 09 марта 2020

У меня есть следующий запрос, который корректно возвращает тег (родительский / root объект) на основе значения метки (дочерних элементов), однако он дублирует родительский объект 17 раз (поскольку у него 17 меток) в ответ. Есть идеи, что я делаю здесь не так?

builder.and(
  builder.equal(root.join("labels").join("labelIdentity").get("key"), "owner"),
  builder.like(root.join("labels").get("value"), "bob")
);

Обновление

Я пробовал следующее на основе https://issues.apache.org/jira/browse/OPENJPA-2333, но это все еще возвращает 17 повторяющихся результатов, когда должен быть возвращен только один:

final Join labels = root.join("labels", JoinType.INNER);
final Join labelIdentities = labels.join("labelIdentity", JoinType.INNER);

builder.and(
  builder.equal(labelIdentities.get("key"), "owner"),
  builder.like(labels.get("value"), "bob")
);

Я полагаю, что использование query.distinct(true) избавит от дубликатов и, похоже, является рекомендуемым подходом, основанным на этом принятом ответе: { ссылка }

1 Ответ

2 голосов
/ 09 марта 2020

Возможно, проблема в том, как работает JPA. Вот страница, которая может помочь: https://issues.apache.org/jira/browse/OPENJPA-2333

(я бы прокомментировал, но у меня недостаточно очков репутации ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...