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

1. 性能

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

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

 

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

基本思路和实现方式:已经实现,占坑待续...(上来是写ext的,这里顺便占个坑)

posted on 2010-05-25 16:01  追萝驴  阅读(2909)  评论(1编辑  收藏  举报