Отличительные результаты в Hibernate Criteria API Inner Join - PullRequest
0 голосов
/ 31 октября 2018

У меня есть Request объект, который может иметь несколько Authors. Отображение определено правильно.

В API Критерии я определяю ограничение, которое выполняет Присоединение к AUTHORS_T.

Criteria criteriaQuery = session.createCriteria(Request.class);

// Create alias for Authors table
criteriaQuery.createAlias("Authors", "auth", JoinType.INNER_JOIN);

// Define restriction: LIKE on auth.firstName / auth.LastName
String authorNameForQuery = "%" + searchCriteria.getAuthorName().trim() + "%";
Disjunction firstOrLast = Restrictions.disjunction();
firstOrLast.add(Restrictions.ilike("auth.lastname", authorNameForQuery) )
           .add(Restrictions.ilike("auth.firstname", authorNameForQuery) )
criteriaQuery.add(firstOrLast);

Результирующий SQL:

select ... // one-by-one
   from requests_t _this 
   inner join authors_t auth_ on this_.ID = auth_.REQUEST_ID
   where ...

Все работает, но я получаю несколько одинаковых запросов для каждого автора.

например. если RequestID=111 имеет 4 author с, я получаю 4 результата назад, но я должен получить только 1. Это результат ВНУТРЕННЕГО СОЕДИНЕНИЯ.

Есть ли способ в Criteria API для меня избежать этого и получить объекты Distinct Request?

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