浏览 4091 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-11
我的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的不熟悉所造成的! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-12
DetachedCriteria不支持 in (select xxx from xxx) 式的语句
|
|
返回顶楼 | |
发表时间:2007-08-22
如果 String[] arr = new String[]{"北京","上海","陕西","四川"};
是一个模糊查询的条件呢?能用String[] arr = new String[]{"北京%","上海%","陕西%","四川%"}; ? |
|
返回顶楼 | |