【发布时间】:2009-11-30 11:00:38
【问题描述】:
我有一个 MySQL 表,其中一种列类型为 Date。在我的休眠映射文件中,我已将此列映射到类型 java.util.Date。现在在 HQL 中尝试根据日期相等性检索对象时,如果我使用 new Date() 设置日期,我不会得到任何结果。如果我通过将小时、分钟和秒设置为零来标准化日期,我会得到结果。这是必需的吗,因为我已将 SQL 列类型声明为 Date 而不是 Timestamp?
【问题讨论】:
我有一个 MySQL 表,其中一种列类型为 Date。在我的休眠映射文件中,我已将此列映射到类型 java.util.Date。现在在 HQL 中尝试根据日期相等性检索对象时,如果我使用 new Date() 设置日期,我不会得到任何结果。如果我通过将小时、分钟和秒设置为零来标准化日期,我会得到结果。这是必需的吗,因为我已将 SQL 列类型声明为 Date 而不是 Timestamp?
【问题讨论】:
试试 java.sql.Date
希望这将帮助您解决日期平等问题。
RDJ
【讨论】:
通过显式设置@Type,我能够将 java.util.Date 与 SQL Server 日期列一起使用:
@Type(type="date")
public java.util.Date getDate() {
return date;
}
没有注释,我得到了
java.lang.IllegalArgumentException: 时间戳格式必须是 yyyy-mm-dd hh:mm:ss[.fffffffff]
使用 Hibernate 3.5.1-final
【讨论】:
@Temporal(DATE)