HQL 当前日期
HQL currentdate
我正在尝试使用 currentdate()
函数在 HQL 中创建查询以比较两个日期。
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)中有一个实例 data_fine_commessa with 2019-02-01,但他忽略了它。
为什么?
您错过了 or 部分的大括号:
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 建议,使用参数化查询:
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()
我正在尝试使用 currentdate()
函数在 HQL 中创建查询以比较两个日期。
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)中有一个实例 data_fine_commessa with 2019-02-01,但他忽略了它。
为什么?
您错过了 or 部分的大括号:
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 建议,使用参数化查询:
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()