SetResultTransformer(new DistinctRootEntityResultTransformer())方法受SetResultTransformer模式的限制(先(数据库中)查询,后(数据库外)处理),主要问题有2:
1. 性能
2. 分页计数错误(数据库中算的和后来内存中distinct出来的当然不一样)
所以应该用其他方法替代。而Criteria没有HQL那么直接的distinct关键字可用,需要构建稍微复杂点的代码,尤其是写的Criteria是为一个范型T服务的时候,需要考虑到各种情况。当然,因为用的是范型,所以Criteria会比HQL更适合,所谓得失之间吧。
业务场景:查询任何实体类型及其关联对象,要求能分页,排序,添加任何查询条件,返回总数。
基本思路和实现方式:已经实现,占坑待续...(上来是写ext的,这里顺便占个坑)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步