gpt4 book ai didi

java - 用 JPA 比较两个日期

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:42:35 24 4
gpt4 key购买 nike

我需要比较 JPQL 查询中的两个日期,但它不起作用。

这是我的查询:

Query query = em.createQuery(
"SELECT h
FROM PositionHistoric h,
SeoDate d
WHERE h.primaryKey.siteDb = :site
AND h.primaryKey.engineDb = :engine
AND h.primaryKey.keywordDb = :keyword
AND h.date = d
AND d.date <= :date
ORDER BY h.date DESC");`

我的参数 date 是一个 java.util.Date

我的查询返回一个对象列表,但日期在我的参数范围内。

有人知道怎么做吗?

谢谢。

最佳答案

您应该使用的查询是:

 FROM PositionHistoric h
INNER JOIN FETCH h.date
WHERE h.primaryKey.siteDb = :site
AND h.primaryKey.engineDb = :engine
AND h.primaryKey.keywordDb = :keyword
AND h.date.date <= :date

请注意,按 h.date 排序是毫无意义的(因为它指向 SeoDate 实体,因此实际上您是按 PK 排序)并且您不能按 h 排序。 date.date 因为 SeoDate 被映射为多对一

另请注意,INNER JOIN FETCH h.date 行本身不是必需的,但如果您实际上需要在返回列表中使用 SeoDate 属性,它会为您节省一些额外的惰性查询开销。

关于java - 用 JPA 比较两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1347823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com