在我的表格“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 是我的号码)
我不明白我的错误在哪里。
答案 0 :(得分:1)
JPQL没有这样的“提取”功能,因此您似乎正在转发支持它的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