HQL currentdate - PullRequest
       10

HQL currentdate

0 голосов
/ 03 декабря 2018

Я пытаюсь создать запросы в HQL, используя функцию currentdate() для сравнения двух дат.

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 с 2019-02-01, он игнорирует это.

Почему?

1 Ответ

0 голосов
/ 03 декабря 2018

Вам не хватает скобок или части:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...