Java 用JPA比较两个日期
我需要在JPQL查询中比较两个日期,但它不起作用 我的问题是:Java 用JPA比较两个日期,java,jpa,jpql,Java,Jpa,Jpql,我需要在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 = :keyw
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");`
Query Query=em.createQuery(
“选择h
从h开始,
塞奥达特d酒店
其中h.primaryKey.siteDb=:site
和h.primaryKey.engineDb=:engine
和h.primaryKey.keywordDb=:关键字
h.date=d
d.date我建议使用java.sql.date而不是java.util.date
因为您将它传递给JPQL(一种SQL)
我通常用时间戳代替日期,但是如果你没有选择的话
是不是:h.date=d.date而不是h.date=d?您应该使用的查询是:
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
内部连接获取h.date
其中h.primaryKey.siteDb=:site
和h.primaryKey.engineDb=:engine
和h.primaryKey.keywordDb=:关键字
还有h.date.date你能把PositionHistoric
和SeoDate
类的片段放在注释相关属性的地方吗?很难理解其他情况;你的命名方案似乎不一致。你的解决方案的问题是我获得了PositionHistoric,但我不确定这是否正确对象是已知的最后一个日期您将获得一个positionhistorical
实体列表;所有这些实体都将链接到日期早于您的参数的SeoDate
实体。这就是您发布的原始查询试图做的,但它可以工作。如果您需要做其他事情,您需要澄清您的问题并解释这正是你想要实现的。我发现了我的错误。在我的primaryKey中,日期没有包含在内,所以JPA每次都返回相同的对象。我已经在primaryKey中包含了日期,所有工作都很好。谢谢你的回答。