您的位置:首页 > 其它

NHibernate中用Criteria查询,不采用SetResultTransformer(new DistinctRootEntityResultTransformer())处理Distinct

2010-05-25 16:01 501 查看
SetResultTransformer(new DistinctRootEntityResultTransformer())方法受SetResultTransformer模式的限制(先(数据库中)查询,后(数据库外)处理),主要问题有2:

1. 性能

2. 分页计数错误(数据库中算的和后来内存中distinct出来的当然不一样)

所以应该用其他方法替代。而Criteria没有HQL那么直接的distinct关键字可用,需要构建稍微复杂点的代码,尤其是写的Criteria是为一个范型T服务的时候,需要考虑到各种情况。当然,因为用的是范型,所以Criteria会比HQL更适合,所谓得失之间吧。

业务场景:查询任何实体类型及其关联对象,要求能分页,排序,添加任何查询条件,返回总数。

基本思路和实现方式:已经实现,占坑待续...(上来是写ext的,这里顺便占个坑)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐