Java 比较JPA查询中的当前日期时间

Java 比较JPA查询中的当前日期时间,java,jpa,Java,Jpa,我想将数据库中的日期与JPA查询中的当前日期时间进行比较: captureLimitDate

我想将数据库中的日期与JPA查询中的当前日期时间进行比较:

captureLimitDate 我的要求如下:

database.captureLimitDate:04/07/2012 19:03:00 当前日期时间:2012年7月4日20:03:00

我的回答是:

SELECT o FROM Operation o"
+ " WHERE ( o.merchantId =:merchantId ) AND "
+ "(o.captureLimitDate < currentDateTime ) ";

我想比较当前日期和时间。上述查询是否有效

必须使用当前时间戳来引用JPQL查询中的当前日期和时间:

select o from Operation o
where o.merchantId = :merchantId
and o.captureLimitDate < CURRENT_TIMESTAMP
您可以使用

query.setParameter("maxDateTime", maxDateTime, TemporalType.TIMESTAMP);

JPA定义了特殊的JPQL表达式,这些表达式在执行查询时在数据库服务器上计算为日期和时间:

CURRENT\u DATE
-计算为当前日期(一个
java.sql.DATE
实例)

CURRENT\u TIME
-计算为当前时间(一个
java.sql.TIME
实例)

CURRENT_TIMESTAMP
-计算为当前时间戳,即日期和时间 (a
java.sql.Timestamp
实例)


更多信息:

单元测试说明了什么?currentDateTime将作为用户输入,作为查询的参数。在这种情况下要做什么?
select o from Operation o
where o.merchantId = :merchantId
and o.captureLimitDate < :maxDateTime
query.setParameter("maxDateTime", maxDateTime, TemporalType.TIMESTAMP);