Как получить CURDATE () / ТЕПЕРЬ () на именованном запросе JPA?

Мое предположение - то, что это происходит из-за довольно общего атрибута DBMS - Просто, потому что две вещи являются оба пустыми, не означает, что они равны.

Для разработки немного попытайтесь выполнить эти два запроса:

SELECT * FROM TABLE WHERE field = NULL

SELECT * FROM TABLE WHERE field IS NULL

причиной "ЯВЛЯЕТСЯ ПУСТАЯ" конструкция, то, что в мире DBMS, ПУСТОМ УКАЗАТЕЛЕ! = ПУСТОЙ УКАЗАТЕЛЬ начиная со значения ПУСТОГО УКАЗАТЕЛЯ - то, что значение не определено. Начиная с ПУСТЫХ неопределенных средств Вы не можете сказать, что два нулевых значения равны, так как по определению Вы не знаете, каковы они.

, Когда Вы явно проверяете на "поле == ПУСТОЙ УКАЗАТЕЛЬ", LINQ, вероятно, преобразовывает это в "поле IS NULL". Но когда Вы используете переменную, я предполагаю, что LINQ автоматически не делает того преобразования.

Вот сообщение форума MSDN с большим количеством информации об этой проблеме.

Похож на хороший "обман", должен изменить Вашу лямбду для сходства с этим:

c => c.ParentId.Equals(categoryId)

12
задан naXa 9 October 2017 в 11:00
поделиться

2 ответа

That depends on your JPA provider. Hibernate, for example, supports current_date() function:

from MyEntity where myDateProperty > current_date()
19
ответ дан 2 December 2019 в 03:06
поделиться

Из спецификации :

4.6.16.3 Функции Datetime

 functions_returning_datetime: =
CURRENT_DATE |
CURRENT_TIME |
CURRENT_TIMESTAMP

Функции datetime возвращают значение текущей даты, времени и отметка времени на сервере базы данных.

33
ответ дан 2 December 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: