`
fuhao9611
  • 浏览: 85408 次
  • 性别: Icon_minigender_1
  • 来自: 陕西 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用DetachedCriteria所遇到的一个问题

阅读更多
今天遇到了一个使用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的不熟悉所造成的!
分享到:
评论
2 楼 kris_xu 2007-08-22  
如果 String[] arr = new String[]{"北京","上海","陕西","四川"};  
是一个模糊查询的条件呢?能用String[] arr = new String[]{"北京%","上海%","陕西%","四川%"};  ?
1 楼 drinkjava 2007-07-12  
DetachedCriteria不支持 in (select xxx from xxx) 式的语句

相关推荐

    DetachedCriteria Criteria 使用方法

    传统的做法是通过Map来传递查询条件,但这种方式存在明显的不足之处:Map只能传递查询字段名和对应的值,无法明确表示如何进行条件运算(如大于、小于、包含等),这使得业务层对象必须事先知道每一个查询条件的具体...

    如何解决hibernate自动更新实体类的问题共5页.pd

    在使用Hibernate进行Java开发时,有时会遇到一个常见的问题,即Hibernate自动更新实体类的问题。这个问题通常发生在我们从数据库加载一个实体对象,对其进行修改,但并没有显式地调用`save()`或`update()`方法,然而...

    hibernate3.2.5

    然而,在使用过程中,开发者可能会遇到一个问题——“Update queries only supported through HQL”。这个错误提示表明,尝试执行的SQL更新操作不被Hibernate支持,需要通过Hibernate查询语言(HQL)来完成。本文将...

    hibernate-2.0.zip

    - 创建简单项目:通过一个简单的例子,展示如何使用Hibernate 2.0进行CRUD操作,以及如何处理关联关系。 通过这个指南,读者可以全面了解Hibernate 2.0的核心概念和实践技巧,从而更好地利用这个框架来开发高效的...

    Hibernate_Criteria条件查询数据

    10. **使用DetachedCriteria**:当查询条件在未来的某个时刻才确定时,可以先创建一个DetachedCriteria对象,然后在需要的时候再与Session关联并执行查询。 在实际开发中,Hibernate Criteria查询提供了很大的便利...

    Hibernate培训教程

    Hibernate是一个强大的Java对象关系映射(ORM)框架,它简化了数据库与Java应用程序之间的交互。本教程将深入探讨Hibernate的核心概念和技术,帮助开发者更好地理解和使用这一工具。 **1. Hibernate概述** ...

    hibernate程序高手秘笈-英文版

    《Hibernate: A Developer's Notebook》是一本专为深入理解Hibernate技术而编写的英文版指南,适合已经具备一定...书中的实战案例和解决方案将帮助你解决在开发过程中可能遇到的问题,让你成为Hibernate的真正高手。

    详解Javaee Dao层的抽取

    在本文中,我们将详解 JavaEE Dao 层的抽取,主要介绍如何将 Dao 层抽取成一个通用的 BaseDao,以便在不同的项目中重复使用。 Dao 层抽取的必要性 在 JavaEE 应用程序中,Dao 层是数据访问的入口。然而,在实际...

    java知识点,面试题总结

    - 请给出一个使用HQL查询的例子,如何进行分页查询? - Hibernate的乐观锁和悲观锁是如何实现的? 以上知识点涵盖了Java基础和Hibernate的主要内容,对于初学者而言,理解和掌握这些知识点是迈向Java开发的重要...

    hibernate电子书

    Hibernate是一个开放源代码的对象关系映射(ORM)框架,它极大地简化了数据库编程,使得开发者可以使用面向对象的方式来处理数据库操作,而无需过多关注底层SQL语言。 在本书中,首先会讲解Hibernate的基本概念,...

    Hibernate3.1参考手册中文版

    Hibernate是Java开发中的一个强大工具,它通过提供一种抽象机制,使得程序员可以使用面向对象的方式来操作数据库,而无需关心底层SQL的实现。本手册中文版的发布,无疑为国内开发者提供了更方便的学习途径。 在...

    Bootstrap Table的使用总结

    例如,如果有一个包含 ID 的数组,我们可以使用 `$.map()` 来提取 ID: ```javascript var ids = $.map(data.rows, function(item) { return item.id; }); ``` 这段代码会创建一个新的数组,只包含原数组中每个元素...

    ( [尚硅谷]_佟刚_Hibernate面试题分析.zip

    1. **Hibernate概述**:Hibernate是一个开放源代码的对象关系映射(ORM)框架,它自动管理Java应用程序与数据库之间的交互,将对象模型转换为关系数据库模型,简化了数据访问。 2. **配置文件**:Hibernate的工作...

    Bootstrap table的使用方法

    Bootstrap Table 是一个基于 jQuery 的数据展示插件,它利用了 Bootstrap 框架的样式,提供了灵活的表格展示功能,包括排序、筛选、分页、自定义列等。在本文中,我们将深入探讨如何使用 Bootstrap Table,以及在...

    Hibernate Api

    在使用Hibernate API时,可能会遇到如**HibernateException**、**StaleObjectStateException** 等异常,需要正确捕获和处理。 以上是对Hibernate API 的基本介绍,实际开发中,还需要结合具体的业务场景和数据库...

Global site tag (gtag.js) - Google Analytics