论坛首页 Java企业应用论坛

关于DetachedCriteria的问题

浏览 7670 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-12-30  
我想重用DetachedCriteria
分页查询的时候,我会用这个DetachedCriteria先查询总记录个数
DetachedCriteria.setProjection(...);
查完之后我想再用这个DetachedCriteria查询对象列表
DetachedCriteria.setProjection(null);
这样能查到的不是我想要的对象列表.
我想问的是如何撤销一些对DetachedCriteria的操作,比如把Projection和Order等去掉,或者能够复制一个DetachedCriteria,一个用来count,一个用来list,但是DetachedCriteria没有实现Clonable,该怎么办?
   发表时间:2005-12-31  
去掉Projection可以这样做
dc.setProjection(null);
dc.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
但是去掉Order好像没办法,Order在内部是一个List列表,但是hibernate没有提供方法让我们获得这个List对象
0 请登录后投票
   发表时间:2005-12-31  

http://forum.iteye.com/viewtopic.php?t=14657
的回帖中有提到

一般需要重置ResultTransformerdc.setResultTransformer( original resultTransformer before setProjection(...) )

另外,order可以作为另外一个参数,在list的时候才加入,而不是已经设置在dc这个参数中了
0 请登录后投票
   发表时间:2005-12-31  
目前Order,分页都是作为方法参数传进去的,感觉这样很别扭
Order,Projection应该在Criteria里面可以动态设置,而setFirstResult和setMaxResult应该在DetachedCriteria里面可以设置,不知道hibernate为什么不这样做,是不能这样做还是忘记这样做?看源码好像是后者
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics