`
zxylcy
  • 浏览: 5177 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate下的子查询

阅读更多
昨天在用hibernate做项目的时候,发现一个bug。就是发现在用Restrictions.in()函数的时候,当in里面的表达式超过1000的时候就会报错。因为在oracle数据库里面,默认括号里面的表达式是不能超过1000.如果是用纯sql语句的话问题可能还是比较好解决的,因为我可以拼接sql。但是我在想hibernate作为一个这么成熟的持久层框架不可能没有考虑到这个问题的啊。后面经过查找资料和老板的帮助,终于找到了解决的方法。那就是在hibernate里面。查询都是先建立一个DetachedCriteria或者一个Criteria,前者是离线的,后者是在线的。我选择的是前者的离线的方式。我的查询是基于一个客户表和一个资源表的。在资源表里面有一个外键customer_id是客户表的主键。我开始的想法是先根据customer_name查询出来一个customer的list对象,然后用Restrictions.in()去查询,开始没有什么问题,但是当我模糊查询的时候等到的list的size大于1000的时候就开始出现错误了。后面查找才知道在oracle里面in厘米的表达式不能超过1000.后面我就开始想办法解决,但是网上的基本都是一些sql拼接的方式,我想要的是一种hibernate里面的方式。后面在老板的提醒下想到了hibernate下面的子查询的方式。所以我就直接用了criteria.add(Restrictions.like("customer.cnName", customerName));。但是后来发现还是不可以。总是报错说Customer类没有customer.cnName这个属性。后面通过查找资料才知道要想进行此类的子查询就要在创建一个DetachedCriteria。就是在原来的DetachedCriteria的基础上创建一个。criteria.createCriteria( "customer" ).add( Restrictions.like( "cnName" , customerName , MatchMode.ANYWHERE ) );如上所示。这种方式可以无限循环下去。那么就代表可以进行多层外键的子查询。
分享到:
评论

相关推荐

    Hibernate 函数 ,子查询 和原生SQL查询

    Hibernate 函数 ,子查询 和原生SQL查询。Hibernate 函数 ,子查询 和原生SQL查询

    hibernate子查询

    hibernate子查询

    通用查询框架(hibernate+Ajax+jstl)

    基于hibernate的开源通用查询框架: 1.支持全部hql语法 2.可以支持Ajax用的 xml数据结构,也可以支持jsp、jstl、struts等标签,根据配置不同的数据解析器,得到不同结构的数据。 3.集成完整的分页功能。 4....

    基于hibernate 通用查询框架,包含查询、分页列表 功能

    Awake框架hql解析模块,支持Hql子查询的用法: http://hi.baidu.com/jfheng/blog/item/96ad1852d338a4080cf3e318.html 上面有最新功能介绍,文档说明,另外希望大家给我留言,提供一些好的建议 通用查询页面中的...

    用Hibernate实现分页查询.docx

    分页查询就是把数据库中某张表的记录数进行分页查询,在做分页查询时会有一个Page类,下面是一个Page类,我对其做了详细的注解:。。。。。。。。。。。。

    Hibernate+中文文档

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

    Oracle中(column1,column2..)in(集合/子查询)的hibernate实现

    NULL 博文链接:https://raywithu.iteye.com/blog/1139409

    Hibernate 一对一关联查询.docx

    外键方式总结: 1、在有外键的一方,可以维护关联关系,可以建立关联关系,同样也可以解除关联关系,可以任意删除本对象,如果在hbm.xml中设置了cascade="delete",也可以删除关联对象 2、在没有外键的一方,不可以...

    hibernate3.2中文文档(chm格式)

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

    HibernateAPI中文版.chm

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

    解决在同一项目中Hibernate与Mybatis共存的问题的解决方案.docx

    框架本身没有对错一说,只有适合和更适合项目的选择。任何框架都有自身的能力范围,就拿Hibernate和...Mybatis框架使用起来很灵活,开发者可以自定义查询语句,但增加了模板代码的数量,看起来没有Hibernate那么便捷。

    Hibernate实战(第2版 中文高清版)

     14.3 联结、报表查询和子查询   14.3.1 联结关系和关联   14.3.2 报表查询   14.3.3 利用子查询   14.4 小结   第15章 高级查询选项   15.1 利用条件和示例查询   15.1.1 基本的条件查询   15.1.2...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     18.4.3 子查询  18.4.4 本地SQL查询  18.4.5 查询结果转换器  18.5 查询性能优化  18.5.1 iterate()方法  18.5.2 查询缓存  18.6 小结  18.7 思考题 第19章 Hibernate高级配置  19.1 配置数据库连接池  ...

    hibernate 教程

    子查询 11.12. HQL示例 11.13. 提示和技巧(Tips & Tricks) 12. 条件查询(Criteria Query) 12.1. 创建一个Criteria实例 12.2. 缩小结果集范围 12.3. 对结果排序 12.4. 关联(Associations)...

    Hibernate 中文 html 帮助文档

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) 16.1.3....

    Hibernate中文详细学习文档

    15.8. 离线(detached)查询和子查询 15.9. 根据自然标识查询(Queries by natural identifier) 16. Native SQL查询 16.1. 使用SQLQuery 16.1.1. 标量查询(Scalar queries) 16.1.2. 实体查询(Entity queries) ...

    Hibernate中文API大全

    <component> 元素还允许有 子元素,用来表明component类中的一个属性是指向包含它的实体的引用。 <parent name="namedPerson"/> <!-- reference back to the Person --> ; 8.2. 在集合...

    hibernate 3中的缓存小结

    3) 挎贝ehcache.xml文件到类路径(项目工程的src目录下),这个文件在Hibernate安装目录的etc下。 2.4.2. 配置步骤: Hibernate允许在类和集合的粒度上设置第二级缓存。在映射文件中,和元素都有一个子元素,这个子...

    最全Hibernate 参考文档

    19.1.5. 使用子查询抓取(Using subselect fetching) 19.1.6. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略...

Global site tag (gtag.js) - Google Analytics