Hibernate Criteria API内部联接中的不同结果

时间:2018-10-31 20:58:44

标签: java spring hibernate hibernate-criteria

我有一个Request对象,可以有多个Authors。映射已正确定义。

在Criteria API中,我定义了一个对AUTHORS_T进行Join的限制。

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个。这是INNER JOIN的结果。

我在Criteria API中是否有办法避免这种情况并获取Distinct Request对象?

0 个答案:

没有答案