【发布时间】:2012-11-01 16:40:59
【问题描述】:
我正在通过 JPA 使用 Hibernate,我需要按 Date 属性的时间部分过滤记录。
public class Foo {
Date getDateTime() {
// Returns a date and time value.
}
}
Time startTime = ...;
Time endTime = ...;
TypedQuery<Foo> query = entityManager.createQuery("SELECT foo FROM Foo foo where :startTime <= foo.dateTime AND foo.dateTime <= :endTime", Foo.class);
query.setParameter("startTime", startTime);
query.setParameter("endTime ", endTime);
这当然行不通,因为您无法直接比较 Date 和 Time。如果这是一个 SQL 查询,那么我会使用一些 DBMS 特定的日期函数来比较它们,但是在 JPA 中如何比较日期和时间呢?
【问题讨论】:
-
您在使用 java.sql.Time 吗?
-
只是为了澄清......您想查询具有 datetime 列的记录,但仅与该列的 hh:mm:ss.SSS 组件进行比较。或者换一种说法,“给我一天中某个时间发生的所有记录”。对吗?
-
@kaliatech 前者是正确的。