使用 JPA 和 JPQL 的日期小时(在 NamedQuery 中)
Hour of a Date using JPA and JPQL (in a NamedQuery)
在我的 table "creneau" 中有一列 "dateHeure"。 "dateHeure" 是一个日期。我想计算具有 "dateHeure" 的行数,其中一个小时等于我选择的数字。我想直接在 NamedQuery 中进行比较。
我尝试了下面的代码,但这个代码不起作用:
@NamedQuery(
name = "compterCreneauxHeure",
query = "SELECT count(cre.creneauId)
FROM CreneauEntity cre
WHERE extract(HOUR cre.dateHeure) = :heure")
但是,下面的效果很好:
@NamedQuery(
name = "compterCreneauxHeure",
query = "SELECT count(cre.creneauId)
FROM CreneauEntity cre
WHERE extract(DAY cre.dateHeure) = :heure")
(:heure是我的号码)
我不明白我的错误在哪里。
JPQL 没有这样的功能 "extract",因此您似乎在依赖支持该功能的 JPA 提供程序。 JPQL != SQL。阅读 JPA 参考文档或 JPA 规范。
然而,大多数 JPA 提供程序会支持
SELECT count(cre.creneauId) FROM CreneauEntity cre WHERE HOUR(cre.dateHeure) = :heure
尽管严格来说它还不是 JPA 规范的一部分(但)。同样,大多数 JPA 提供程序都支持函数 DAY(...)
。参见 https://github.com/javaee/jpa-spec/issues/102
在我的 table "creneau" 中有一列 "dateHeure"。 "dateHeure" 是一个日期。我想计算具有 "dateHeure" 的行数,其中一个小时等于我选择的数字。我想直接在 NamedQuery 中进行比较。
我尝试了下面的代码,但这个代码不起作用:
@NamedQuery(
name = "compterCreneauxHeure",
query = "SELECT count(cre.creneauId)
FROM CreneauEntity cre
WHERE extract(HOUR cre.dateHeure) = :heure")
但是,下面的效果很好:
@NamedQuery(
name = "compterCreneauxHeure",
query = "SELECT count(cre.creneauId)
FROM CreneauEntity cre
WHERE extract(DAY cre.dateHeure) = :heure")
(:heure是我的号码)
我不明白我的错误在哪里。
JPQL 没有这样的功能 "extract",因此您似乎在依赖支持该功能的 JPA 提供程序。 JPQL != SQL。阅读 JPA 参考文档或 JPA 规范。
然而,大多数 JPA 提供程序会支持
SELECT count(cre.creneauId) FROM CreneauEntity cre WHERE HOUR(cre.dateHeure) = :heure
尽管严格来说它还不是 JPA 规范的一部分(但)。同样,大多数 JPA 提供程序都支持函数 DAY(...)
。参见 https://github.com/javaee/jpa-spec/issues/102