如何在Hibernate Criteria中加入JOIN后获取行数?

时间:2015-06-10 10:16:17

标签: java mysql hibernate criteria

我尝试创建请求:

Criteria criteria = session.createCriteia(User.class);
criteria.setFetchMode(field, FetchMode.JOIN);
int count1 = criteria.list().size(); //340
Number count2 = (Number) criteria.setProjection(Projections.rowCount()).uniqueResult(); //279

如何在不致电340的情况下退回criteria.list().size()

1 个答案:

答案 0 :(得分:1)

我认为使用Projections.rowCount() hibernate会忽略

criteria.setFetchMode(field, FetchMode.JOIN);

您可以使用createAlias

criteria.createAlias("field","field", JoinType.LEFT_OUTER_JOIN);

在两种情况下使用Hibernate配置文件中的hibernate.show_sql检查hibernate生成的查询

https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/session-configuration.html#configuration-optional