У меня есть 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?