HQL错误和可空领域

为什么此查询不工作

FROM WorkflowConfiguration WHERE ((saReplacement IS NOT NULL) AND (:currentTime >= saReplacement.start) AND (saReplacement.end >= :currentTime)) OR ((hrmsAdminReplacement IS NOT NULL) AND (:currentTime >= hrmsAdminReplacement.start) AND (hrmsAdminReplacement.end >= :currentTime)) OR ((hrManagerReplacement IS NOT NULL) AND (:currentTime >= hrManagerReplacement.start) AND (hrManagerReplacement.end >= :currentTime)) OR ((payrollAdminReplacement IS NOT NULL) AND (:currentTime >= payrollAdminReplacement.start) AND (payrollAdminReplacement.end >= :currentTime))

但是,这一次呢

FROM WorkflowConfiguration WHERE (saReplacement IN (from WorkflowReplacement as replacement WHERE (:currentTime >= replacement.start) AND (replacement.end >= :currentTime))) OR (hrmsAdminReplacement IN (from WorkflowReplacement as replacement WHERE (:currentTime >= replacement.start) AND (replacement.end >= :currentTime))) OR (hrManagerReplacement IN (from WorkflowReplacement as replacement WHERE (:currentTime >= replacement.start) AND (replacement.end >= :currentTime))) OR (payrollAdminReplacement IN (from WorkflowReplacement as replacement WHERE (:currentTime >= replacement.start) AND (replacement.end >= :currentTime)))

之所以它很长时间saReplacement,hrmsAdminReplacement,hrManagerReplacement和payrollAdminReplacement都可以是空的,所以我把一个检查,以确保它们不空,因此该条款的其他部分没有得到执行。 但由于某些原因,当我运行的第一个查询,我没有得到任何结果,但如果我运行第二个(效率低得多),我得到的所有预期的结果。 这是Hibernate的HQL中的错误还是我失去了我的脑海里?

--------------解决方案-------------

您是否尝试过这样的事情:

FROM WorkflowConfiguration wfc
LEFT JOIN FETCH wft.saReplacement a
LEFT JOIN FETCH wft.hrmsAdminReplacement b
LEFT JOIN FETCH wft.hrManagerReplacement c
LEFT JOIN FETCH wft.payrollAdminReplacement d
WHERE
((:currentTime >= a.start) AND (a.end >= :currentTime)) or
((:currentTime >= b.start) AND (b.end >= :currentTime)) or
((:currentTime >= c.start) AND (c.end >= :currentTime)) or
((:currentTime >= d.start) AND (d.end >= :currentTime))

分类:过冬 时间:2012-01-01 人气:0
本文关键词: 冬眠,HQL
分享到:

相关文章

  • 冬眠HQL拦截器/监听器 2014-09-18

    我有,我想阻止Hibernate的插入/删除/更新操作,如果在HttpSession中的用户是一种超级用户(其中​​user.isSuper()返回true)的弹簧Web应用程序. 我已经实现监听这些事件,但问题是,监听器不点火的HQL查询(session.executeUpdate()). 同样的问题是拦截器为好. 请帮忙. --------------解决方案------------- 试试这个下面的代码,而不是session.executeUpdate(): - getSessionFac

  • 冬眠 - HQL许多条款加入 2014-09-26

    我一直在阅读Hibernate文档,但我还没有发现任何会解释如何做到以下几点. 我有我想转换为HQL下面的SQL代码: SELECT {msg.*}, {cmd.*} FROM Schema.Messages AS msg LEFT OUTER JOIN schema.send_commands AS cmd ON cmd.message_key = msg.unique_key AND ( lower(cmd.status) IN (lower('failed') ) ) WHERE msg.

  • 使用最小值,最大值和计数的HQL 2012-04-06

    是否冬眠HQL查询支持使用选择最小值,最大值,计数和其它SQL函数? 喜欢 从者P选择分钟(p.age) 谢谢 --------------解决方案------------- 是的min(), max() and count()在HQL支持 这就是我如何使用Max在休眠: public long getNextId(){ long appId; try{ Session session = HibernateUtil.getAdmSessionFactory().getCurrentSessio

  • Hibernate的 - 是否从HQL查询产生的SQL得到由休眠系统缓存? 2013-04-01

    3.3休眠 如果我有代码是动态创建像冬眠HQL查询 String query = "from Foo where "; if( beforeDate != null ) then query+=" createdBefore < :before"; session.createQuery(query); 这是否会得到分贝执行产生的SQL的是SessionManager获取缓存,这样,如果相同的查询不断得到执行时不会有得到重新编译每次还是会得到重新解析和休眠重建

  • 如何写在休眠本地SQL查询,而不硬编码表名和字段? 2012-02-09

    有时候,你必须写一些在本地的SQL查询,而不是冬眠HQL. 有没有一个很好的方式,以避免硬编码表名和字段,并从现有映射这个数据? 例如,而不是: String sql = "select user_name from tbl_user where user_id = :id"; 就像是: String sql = "select " + Hibernate.getFieldName("user.name") + " from "

  • 获得随机对象从通过Hibernate的SQL数据库 2012-06-13

    我有下面的MySQL相关的代码(ORDER BY RAND()). 我想知道是否有冬眠HQL替代它(admin是布尔标记,表示该用户为管理员). 这是工作的代码: public long getRandomAdmin() { Session session = getSession(); Query selectQuery = session.createSQLQuery("SELECT user_id FROM users WHERE admin = '1' ORDER BY RAND()&q

  • SQL转换为HQL - 冬眠 2012-06-05

    我有这些三三两两SQL脚本,我得到一些问题进行翻译HQL,在从JPA查询中使用: SELECT f.idprovider, pe.name from provider f inner join person pe on(f.idperson = pe.idperson) inner join product_provider pf on(f.idprovider = pf.idprovider) inner join product p on(pf.idproduct = p.idproduct

  • 如何进行直接HQL查询在冬眠的Grails DB在Eclipse中测试目的 2013-08-14

    出于测试目的,我想有一个控制台,我可以只输入一个HQL命令,看看它在Grails的返回休眠DB(在我的情况下,MySQL数据库),而它的运行,例如在测试环境中. 什么是做到这一点的最好方法是什么? 我使用Eclipse和已经碰到了JBoss Hibernate的工具,但我不知道如何配置才能使用我的Grails的MySQL数据库. 哪种类型(核心,注释,JPA),我必须选择那里,并填写"配置文件"/"持久性单元"字段呢? 我已经设置了一个属性文件(见下文). hibe

  • 冬眠如何订购一套HQL 2013-11-10

    我明白,如果我使用 class Fund{ private Set<FundClass> fundClasses = new LinkedHashSet<FundClass>(); @org.hibernate.annotations.OrderBy(clause="order asc") public Set<FundClass> getFundClasses() { return fundClasses; } } 那么我的FundClasses会

  • 冬眠前N行HQL查询 2015-03-08

    我使用下面的代码与Hibernate执行HQL查询: String myHqlQuery = "select from MyTable where Something = ? order by SomeVal"; // Set bind values ... getHibernateTemplate().find(myHqlQuery, bindParams); 现在,我要选择从表中的前N行. 我知道MySQL的有限制的关键字是不可用的HQL. 我也知道,在Hibernate有setM

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.311 (s). 10 q(s)