`
zygege
  • 浏览: 1343 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

hibernate 处理 group by 的重大bug

阅读更多
hibernate重大BUG


HQL:
select t.objid
  from T01VPeople t
where 1 != 1
    or (t.t01Peoplemodel.propertyname = 'hotel_city' and
       t.objlong in (select tree.ptid
                        from T01Propertytree tree
                       where tree.treename like '%上海%'))
    or (t.t01Peoplemodel.propertyname = 'hotel_name' and
       t.objstringhit like '%龙东%'))
group by t.objid
having count(t.objid) = 2

Hibernate转换成sql:

select
            t01vpeople0_.OBJID as col_0_0_
        from
            T01_V_PEOPLE t01vpeople0_,
            T01_PEOPLEMODEL t01peoplem1_
        where
            t01vpeople0_.OMID=t01peoplem1_.OMID
            and (
                1<>1
                or t01peoplem1_.PROPERTYNAME='hotel_city'
                and (
                    t01vpeople0_.OBJLONG in (
                        select
                            t01propert2_.PTID
                        from
                            T01_PROPERTYTREE t01propert2_
                        where
                            t01propert2_.TREENAME like '%上海%'
                    )
                )
                or t01peoplem1_.PROPERTYNAME='hotel_name'
                and (
                    t01vpeople0_.OBJSTRINGHIT like '%龙东%'
                )
            )

正确语句:

select
            t01vpeople0_.OBJID as col_0_0_
        from
            T01_V_PEOPLE t01vpeople0_,
            T01_PEOPLEMODEL t01peoplem1_
        where
            t01vpeople0_.OMID=t01peoplem1_.OMID
            and (
                1<>1
                or t01peoplem1_.PROPERTYNAME='hotel_city'
                and (
                    t01vpeople0_.OBJLONG in (
                        select
                            t01propert2_.PTID
                        from
                            T01_PROPERTYTREE t01propert2_
                        where
                            t01propert2_.TREENAME like '%上海%'
                    )
                )
                or t01peoplem1_.PROPERTYNAME='hotel_name'
                and (
                    t01vpeople0_.OBJSTRINGHIT like '%龙东%'
                )
            )
group by t01vpeople0_.OBJID having count(t01vpeople0_.OBJID) =2



--------------------------------------------------------------------------

ORM: T01VPeople <-->T01_V_PEOPLE   T01Peoplemodel <--> T01_PEOPLEMODEL
     关联 :T01_V_PEOPLE.omid   <--> T01_PEOPLEMODEL.omid

分享到:
评论
2 楼 zygege 2009-06-19  
难道楼上的意思是HQL映射成SQL不是ORM映射

被楼上打败

1 楼 KimShen 2009-06-19  
抛开是不是bug不说
您这还算是ORM映射吗? 推荐你使用createSQL接口 而不是HQL

相关推荐

    hibernate如何使用criteria联合查询 group by 的语句

    这个案例是根据分组查询,并且得到每组的条数,不懂得可以q我:1710086675,欢迎认识更多新朋友

    hibernate的xml文件bug

    然而,有时候在使用Hibernate的过程中,可能会遇到一些问题,比如由JBoss Tools生成的XML文件出现bug。这个问题可能涉及到多个方面,包括XML文件的语法错误、配置错误或者是工具自身的兼容性问题。下面将详细探讨...

    Hibernate Synchronizer 插件重大缺陷改正

    标题与描述均提到了“Hibernate Synchronizer 插件重大缺陷改正”,这表明文章或讨论主要聚焦于解决在使用Hibernate Synchronizer插件时遇到的关键问题。Hibernate Synchronizer插件通常用于同步数据库操作,例如在...

    Hibernate 3.2.4+ bug

    NULL 博文链接:https://imp9527.iteye.com/blog/438677

    HIbernate免注解实现操作数据库 及Hibernate3连接SQL的BUG解决办法

    4. **实体状态异常**: Hibernate在操作实体时会根据其生命周期状态进行处理,如果出现“ detached entity passed to persist”之类的错误,可能是因为实体状态管理不当。确保在操作实体前正确处理其状态(如merge、...

    在Java SE中使用Hibernate处理数据

    在Java SE环境中使用Hibernate处理数据是一项常见的任务,尤其是在开发企业级应用时,需要对数据库进行高效、灵活的管理和操作。Hibernate作为一个流行的Object-Relational Mapping(ORM)框架,能够简化Java程序员...

    详解Hibernate事务处理机制

    ### 详解Hibernate事务处理机制 #### 一、引言 Hibernate作为一款优秀的对象关系映射(ORM)框架,在Java开发领域扮演着极其重要的角色。它不仅简化了数据持久化的复杂性,还提供了一系列强大的功能来支持高效的...

    Hibernate下数据批量处理解决方案

    在Java开发中,尤其是涉及到大数据量的处理时,人们往往会质疑ORM框架,如Hibernate,是否适合进行批量数据操作。然而,实际上,通过适当的技术手段,我们可以有效地解决Hibernate在批量处理时可能出现的性能问题。...

    Hibernate做的留言板

    【标题】"Hibernate做的留言板" 是一个基于Java的Web应用程序,使用了流行的持久化框架Hibernate来处理数据库交互。这个项目提供了完整的源代码,方便开发者直接在Eclipse集成开发环境中运行和学习。它不仅是一个...

    Hibernate的事务处理机制和flush方法的用法.docx

    在本文中,我们将深入探讨Hibernate的事务处理机制以及`flush`方法的用法,并分析为何在某些场景下会出现特定的异常。 首先,我们需要了解Hibernate中的事务处理。在Java应用中,事务通常与SessionFactory和Session...

    Hibernate,hibernate笔记

    对于MyEclipse项目,可能需要在`.project`文件中添加Hibernate的nature,确保能够正确识别和处理Hibernate相关操作。如果遇到错误,例如配置错误导致browse无法选择正确的项目目录,可能需要手动修改`.project`文件...

    Hibernate入门到精通

    Hibernate 的主要特点是:支持多种数据库管理系统、提供了高效的数据访问机制、支持事务处理和缓存机制等。 Hibernate 环境搭建 要使用 Hibernate,首先需要搭建 Hibernate 的开发环境。下面是 Hibernate 环境搭建...

    Hibernate存储Clob字段的方式总结

    Hibernate存储Clob字段的方式总结涉及了在Java开发中...在实际开发中,可以根据需求选择使用String直接映射Clob的方式或者使用Clob类型处理方式,并注意Hibernate session的创建和管理方法,以保证代码的简洁性与效率。

    Hibernate教程26_事务并发处理

    本教程主要聚焦于Hibernate中的事务并发处理,包括悲观锁和乐观锁两种策略,这对于我们理解如何在高并发环境中确保数据的一致性和完整性至关重要。 首先,事务是数据库操作的基本单元,它确保一组操作要么全部成功...

    hibernate-release-5.2.10

    Hibernate是Java平台上的一款开源对象关系映射(ORM)框架,它允许开发者用面向对象的方式处理数据库操作。在SSH(Spring、Struts、Hibernate)框架中,Hibernate作为持久层的解决方案,极大地简化了数据库操作的...

    hibernate多表联合查询

    Hibernate作为一款流行的Java持久层框架,提供了一种非常便捷的方式来处理这些问题。本文将详细介绍如何利用Hibernate进行多表联合查询,并通过一个具体的例子来展示其强大功能。 #### 二、多表联合查询概述 多表...

    Beginning Hibernate: For Hibernate 5

    - **简化开发**: Hibernate 大大减少了开发者处理复杂 SQL 查询的工作量,使得数据库操作更加直观。 - **提高效率**: 通过缓存机制、懒加载等技术,Hibernate 可以有效提高应用程序性能。 - **增强可维护性**: 采用 ...

    Hibernate-extensions 完整安装包

    总结来说,Hibernate-Extensions是Hibernate的一个强大补充,它扩展了ORM的功能边界,使开发者能够更高效、更灵活地处理数据库操作。无论你是初学者还是经验丰富的开发者,这个完整的安装包都值得你拥有,因为它将为...

    hibernate学习资料大全

    了解事务的ACID特性以及如何在Hibernate中处理事务,可以确保数据的一致性。 7. **一对多、多对一、多对多关联映射**: Hibernate 支持各种关联映射,如一对一、一对多、多对一和多对多。理解这些关联关系的建立和...

    达梦Hibernate方言2.0至4.0

    例如,从Hibernate 2.0到4.0, Hibernate经历了从简单的对象关系映射到支持 Criteria 查询、JPA规范、HQL(Hibernate查询语言)改进等多个重大变革。 在实际开发中,使用“达梦Hibernate方言2.0至4.0”可以确保你的...

Global site tag (gtag.js) - Google Analytics