2007-07-11
使用DetachedCriteria所遇到的一个问题
今天遇到了一个使用DetachedCriteria进行查询的问题,想了半天,得不到结果,最后在付永杰老师的指点下,终于解决了,现在把问题记录下来,希望对大家有所帮助!问题描述如下:
我的Service方法是根据前台传来的数组,然后取出数组里面的每一项,然后作为查询条件进行查询,数组的大小不确定,示例代码如下:
此时我的思路还是停留在如何使用Restrictions.or()来解决对于数组大小不确定的问题,查找资料也没有得到满意的答案,郁闷的很……
恰好付永杰老师在线,我就把自己的问题告诉他了,高手就是高手,直接问我一句,为什么不使用Restrictions.in()呢?真是“一语惊醒梦中人呀”!直接一句就搞定了!
看来还是我对DetachedCriteria的不熟悉所造成的!
我的Service方法是根据前台传来的数组,然后取出数组里面的每一项,然后作为查询条件进行查询,数组的大小不确定,示例代码如下:
// 方法需要根据传来的数组,将数组中的每一个作为查询的条件,实现区域="北京"或者区域="上海"或者区域="陕西"
String[] arr = new String[]{"北京","上海","陕西","四川"};
DetachedCriteria dc = DetachedCriteria.forClass(ListTcpolicyBaseInfoBean.class,"tcp");
// 如果对于数组的大小的,使用Restrictions.or()像下面那样写,就可以搞定
dc.add(Restrictions.or(Restrictions.eq("tcp.District", "上海"),Restrictions.eq("tcp.District","北京")));
// 关键问题是现在数组的大小不确定,查询Hibernate的文档,其对于Restrictions.or()的介绍很简单,也只是适用于两个条件的,其代码如下:
List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.add( Restrictions.or(
Restrictions.eq( "age", new Integer(0) ),
Restrictions.isNull("age")
) )
.list();
此时我的思路还是停留在如何使用Restrictions.or()来解决对于数组大小不确定的问题,查找资料也没有得到满意的答案,郁闷的很……
恰好付永杰老师在线,我就把自己的问题告诉他了,高手就是高手,直接问我一句,为什么不使用Restrictions.in()呢?真是“一语惊醒梦中人呀”!直接一句就搞定了!
dc.add(Restrictions.in("tcp.District",arr));
看来还是我对DetachedCriteria的不熟悉所造成的!
评论
kris_xu
2007-08-22
如果 String[] arr = new String[]{"北京","上海","陕西","四川"};
是一个模糊查询的条件呢?能用String[] arr = new String[]{"北京%","上海%","陕西%","四川%"}; ?
是一个模糊查询的条件呢?能用String[] arr = new String[]{"北京%","上海%","陕西%","四川%"}; ?
drinkjava
2007-07-12
DetachedCriteria不支持 in (select xxx from xxx) 式的语句
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 26373 次
- 性别:

- 来自: 陕西 西安

- 详细资料
搜索本博客
我的相册
result
共 10 张
共 10 张
最近加入圈子
最新评论
-
DWR实现省市县三级联动
纯js就能搞定了 之前写了个四级联动的 数据用的json 不过。。。代码写的很 ...
-- by zcfg -
JXL使用总结
呵呵,正好需要,谢谢分享~
-- by unique.wu -
JavaScript例子—实现行的 ...
这个代码在FF下是有问题的 我有用的是ff 2.0.0.13
-- by wen870105 -
DWR实现省市县三级联动
楼主能否看看DBManager.java代码?
-- by cnpww -
Asp.Net实现增删改以及分 ...
谢谢楼主。 我是个初学者,之前使用JAVA,刚刚换部门要求学c#.net 这边文 ...
-- by jy786394






评论排行榜