У меня есть следующий запрос, который корректно возвращает тег (родительский / 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)
избавит от дубликатов и, похоже, является рекомендуемым подходом, основанным на этом принятом ответе: { ссылка }