简体   繁体   English

Hibernate Criteria中的JOIN后如何获取行数?

[英]How to get row count after JOIN in Hibernate Criteria?

I try to create request: 我尝试创建请求:

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

How to return 340 without calling criteria.list().size() ? 如何在不调用criteria.list().size()情况下返回340

I think while using Projections.rowCount() hibernate ignores 我认为在使用Projections.rowCount()休眠会忽略

criteria.setFetchMode(field, FetchMode.JOIN);

You can use createAlias 您可以使用createAlias

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

Check query generated by hibernate in both the cases by using hibernate.show_sql in Hibernate configuration file 通过在Hibernate配置文件中使用hibernate.show_sql来检查两种情况下由hibernate.show_sql生成的查询

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM