`
dwangel
  • 浏览: 267371 次
社区版块
存档分类
最新评论

求证:hql多条件from时丢失参数?

阅读更多
最近做一个项目,用from对对象进行查询,结果查出重复数据(composite-id,但是key是正确地override了equals和hashCode)。

让hibernate输出生成的native sql发现
from PerformScript where  key.pcd='123456' and key.interviewSheetNo='123456'  and ( startDay=null or startDay='' or startDay<='20070122') and ( endDay=null  or endDay='' or endDay>='20070122' )) and kind='pc'  order by key.relatNo 

生成的是
select performscr0_.p_code as p1_26_, performscr0_.sheet_no as sheet2_26_, performscr0_.relat_no as relat3_26_, performscr0_.kind as kind26_, performscr0_.script as script26_, performscr0_.start_day as start6_26_, performscr0_.end_day as end7_26_ from perform_script performscr0_ 
where performscr0_.p_code='123456' and performscr0_.sheet_no='123456' and (performscr0_.start_day is null or performscr0_.start_day='' or performscr0_.start_day<='20070122') and (performscr0_.end_day is null or performscr0_.end_day='' or performscr0_.end_day>='20070122')

其中kind='pc'丢失了。
但是如果切换一下顺序
from PerformScript where  key.pcd='123456' and key.interviewSheetNo='123456' and kind='pc'   and ( startDay=null or startDay='' or startDay<='20070122') and ( endDay=null  or endDay='' or endDay>='20070122' )) order by key.relatNo 

select performscr0_.p_code as p1_26_, performscr0_.sheet_no as sheet2_26_, performscr0_.relat_no as relat3_26_, performscr0_.kind as kind26_, performscr0_.script as script26_, performscr0_.start_day as start6_26_, performscr0_.end_day as end7_26_ from perform_script performscr0_ 
where performscr0_.p_code='123456' and performscr0_.sheet_no='123456' and 
[b]performscr0_.kind='pc' [/b]
and (performscr0_.start_day is null or performscr0_.start_day='' or performscr0_.start_day<='20070122') and (performscr0_.end_day is null or performscr0_.end_day='' or performscr0_.end_day>='20070122')

条件又出来了。

估计是hibernate的bug。
除非hibernate输出的sql有长度限制。

有碰到同样问题的xdjm没?
分享到:
评论
2 楼 tomgreenintel 2007-01-23  
sql问题
1 楼 抛出异常的爱 2007-01-22  
没事用那么多个括号干什么?也没有or都是and需要么?
   1. from PerformScript where  key.pcd='123456'
and key.interviewSheetNo='123456' 
and ( startDay=null or startDay='' or startDay<='20070122')
and ( endDay=null  or endDay='' or endDay>='20070122' ))
and kind='pc'  order by key.relatNo  

相关推荐

    Hibernate中的查询:HQL、Criteria、原生SQl

    String hql = "from User"; Query query = session.createQuery(hql); List&lt;User&gt; users = query.list(); ``` HQL支持复杂的查询,如分组、排序、联接、子查询等,且能自动处理对象关系映射,提高了代码的可读性...

    Spring--HQL-chaxun.zip_HQL

    在Spring框架中,Hibernate Query Language(HQL)是一种强大的工具,用于执行对象关系映射(ORM)查询。HQL是面向对象的查询语言,与SQL类似但更专注于处理Java对象而不是数据库表。在这个名为“Spring--HQL-chaxun...

    hql语句经典教程

    `from`子句可以同时包含多个类,产生笛卡尔积或进行连接。 ### 3. 关联(Association)与连接(Join) 通过`join`关键字,可以处理关联的实体或集合中的所有元素。例如: - `from Cat as cat inner join cat.mate as ...

    关于HQL相关的论文

    2. **效率**:在大量数据处理时,HQL可能需要更多的资源,因为它需要将查询转换为数据库特定的SQL。但在大多数常规应用中,性能差异并不显著。 3. **可读性**:HQL的面向对象特性使得代码更易于理解和维护,尤其是...

    Hibernate-HQL语句多对多写法

    "Hibernate-HQL语句多对多写法" Hibernate 是一个流行的 Java 持久层框架,它提供了强大的对象关系映射(ORM)功能,使得开发者可以方便地与数据库交互。但是,在使用 Hibernate 时,我们经常会遇到多对多关系的...

    Hibernate框架]Hql语句in中带参数的写法

    Hibernate框架中,在使用HQL语句时,需要传递参数,而在HQL语句中使用in关键字时,需要特别注意参数的传递方式。在本文中,我们将讨论如何在HQL语句中使用in关键字带参数的写法,以及解决相关问题的方法。 一、HQL...

    HQL语句的语法

    HQL(Hibernate Query Language)是Hibernate框架中用于操作对象关系映射(ORM)的SQL-like语言,它允许开发者以面向对象的方式来查询数据库。HQL语句的语法结构与SQL相似,但更注重对象和类的概念。以下将详细介绍...

    精通HQL.doc

    5. **关联查询**:HQL支持一对多、多对一、一对一和多对多的关联查询。例如,如果你想找到所有选修了某课程的学生,可以写成 `from Student s join s.courses c where c.cname='数学'`。 6. **聚合函数**:可以使用...

    NHibernate HQL 条件查询

    在探讨NHibernate HQL条件查询时,我们首先要理解NHibernate框架以及HQL(Hibernate Query Language)的基本概念。NHibernate是一个开放源代码的对象关系映射(ORM)解决方案,它为.NET平台提供了一种将对象模型与...

    Hibernate注解方式、HQL查询

    2. **条件查询**:HQL支持WHERE子句,可以进行条件查询。如查找名字为"John"的用户: ```java hql = "from User where name='John'"; users = session.createQuery(hql).list(); ``` 3. **排序与分页**:使用`ORDER...

    HQL详解

    HQL可以方便地处理一对多、多对一、多对多的关系。在查询时,可以直接引用相关联的对象。 ```sql SELECT c FROM Customer c JOIN c.orders o WHERE o.status = 'paid' ``` 在这个例子中,`Customer`和`Order`之间...

    hql 的使用

    在使用 HQL 时,你需要了解以下几个关键点: 1. **对象和表的关系**:在 HQL 中,我们查询的是类的实例(对象),而不是数据库中的表。例如,`from User user` 查询的是 User 类的实例,而不仅仅是名为 "users" 的...

    Hql多结果集

    ### HQL多结果集详解 #### 一、引言 HQL(Hibernate Query Language)是Hibernate框架提供的查询语言,它支持面向对象的语法结构,并且能够处理复杂的对象关系映射。在开发过程中,经常会遇到需要从数据库中获取多...

    Hibernate-HQL.rar_HQL_hibernate hql

    HQL的灵活性在于它可以处理对象关系,例如一对一、一对多、多对多的关系。在SQL中,处理这些关系通常需要复杂的联接操作,而在HQL中则相对简单。此外,HQL支持动态查询,可以方便地处理集合类型的参数。 四、HQL的...

    Hibernate_HQL大全

    3. **FROM子句**:HQL的`FROM`子句用于指定查询的目标实体。例如,“FROM Cat”将返回所有Cat类的实例。为了增强可读性,通常会使用别名,如“FROM Cat as cat”,其中“cat”作为Cat类实例的别名,可以在后续查询中...

    HQL进阶语句

    String hql = "from User user where user.id in (select friend.userId from Friendship friendship)"; List&lt;User&gt; usersWithFriends = session.createQuery(hql).list(); ``` 6、聚合函数与分组:HQL 提供了 AVG,...

    HQL多对多的查询语句分析

    本文将深入分析HQL在处理多对多关系时的查询语句及其应用。 标题"**HQL多对多的查询语句分析**"主要关注的是如何在Hibernate中使用HQL处理数据库中的多对多关联关系查询。在数据库设计中,多对多关系是最复杂的关联...

    精通HQL(word格式)

    同样,对于多对一、一对多、多对多的关系,HQL也能提供简洁的查询语法。 【默认数据库表和数据】 在学习HQL时,通常会基于一个预先设定的数据库环境。在这个例子中,使用了一个名为joblog的数据库,包含三个表:...

Global site tag (gtag.js) - Google Analytics