首页
学习
活动
专区
圈层
工具
发布

HQL电流
EN

Stack Overflow用户
提问于 2018-12-03 13:30:03
回答 1查看 72关注 0票数 0

我试图使用currentdate()函数在HQL中创建查询,以比较两个日期。

代码语言:javascript
复制
List<Rel_Utenti_Commesse> commesseAttive = new ArrayList<Rel_Utenti_Commesse>();        

commesseAttive = session.createQuery("from Rel_Utenti_Commesse where utenti = '" + utenteSessione + "' and data_fine_commessa > current_date() or data_fine_commessa is null").list();

for(int i = 0; i < commesseAttive.size(); i++)                   
    System.out.println(commesseAttive.get(i).getCommessa().getNome_commessa());

return commesseAttive;

但是,尽管我在数据库(MySQL)中有一个带有2019-02-01的data_fine_commessa的实例,但他忽略了它。

为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-03 13:31:45

你错过了牙套或部分:

代码语言:javascript
复制
commesseAttive = session.createQuery("from Rel_Utenti_Commesse where utenti = '" + utenteSessione + "' and (data_fine_commessa > current_date() or data_fine_commessa is null)").list();

这就是为什么首先要对AND进行评估,而不是OR

@TimBiegeleisen建议,使用参数化查询:

代码语言:javascript
复制
Query query = session.createQuery("from Rel_Utenti_Commesse where utenti = :utenteSessione and (data_fine_commessa > current_date() or data_fine_commessa is null)")
query.setParameter("utenteSessione", utenteSessione)
List result = query.list()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53594934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档