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的,这里顺便占个坑)
1. 性能
2. 分页计数错误(数据库中算的和后来内存中distinct出来的当然不一样)
所以应该用其他方法替代。而Criteria没有HQL那么直接的distinct关键字可用,需要构建稍微复杂点的代码,尤其是写的Criteria是为一个范型T服务的时候,需要考虑到各种情况。当然,因为用的是范型,所以Criteria会比HQL更适合,所谓得失之间吧。
业务场景:查询任何实体类型及其关联对象,要求能分页,排序,添加任何查询条件,返回总数。
基本思路和实现方式:已经实现,占坑待续...(上来是写ext的,这里顺便占个坑)
相关文章推荐
- hibernate setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)
- 直接返回查询信息对应的表头信息-----setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
- NHibernate SetResultTransformer and DTO
- 用criteria进行关联查询--hibernate 的ResultTransformer
- setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)的使用
- setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
- 写在hibernate里面的sql setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
- Hibernate三种状态;query查询;ResultTransformer转换为pojo对象;可以将query语句写在xml中;Criteria查询;ProjectionList总和/f分组等函数
- setResultTransformer(Transformers.ALIAS_TO_ENTITY_
- .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
- .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
- hibernate 使用sql 查询(setResultTransformer)
- hibernate 使用sql 查询利用setResultTransformer查询出封装好的VO对象
- Hibernate 的原生sql查询转map setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
- setResultTransformer的用法
- Asp.Net Nhibernate使用Criteria查询数据使用方法小记
- hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
- spring多数据源的处理 mybatis实现跨库查询 实现Myibatis动态sql跨数据库的处理 Spring动态配置多数据源,即在大型应用中对数据进行切分,并且采用多个数据库实例进行管理,这样
- hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
- NHibernate之旅(4):探索查询之条件查询(Criteria Query)