JPA 将 CURRENT_DATE 定义为函数。当我在 JPQL 语句中使用 CURRENT_DATE 时,底层的 JPA-Provider Hibernate 不会解析这个,只接受 current_date() 以独立于 DBMS。
在我看来,CURRENT_DATE 应该在每个 JPA-Provider 中实现,因为这是 JPA 中的一个基本功能。我认为这是 Hibernate 中的一个错误。
例子:
SELECT o FROM Objects o WHERE o.validFrom < CURRENT_DATE
此语句与 MySQL 作为 DBMS 一起使用,但在 MSSQL 中失败,因为 CURRENT_DATE 未被 Hibernate 解析,并且 CURRENT_DATE 被发送到 MSSQL 无法理解的 DBMS。使用 current_date() 一切正常,但这不是普通的 JPQL。
请给我一些提示,如果这是一个休眠错误或其他任何东西。