我正在使用Hibernate在内存数据库中的H2上编写测试代码。我有两个项目几乎完全相同的配置。在每个测试代码中,模型类自动构建数据库模式。这两个类定义的数据类型相同的方式:Hibernate在时态返回类型中不一致(日期与时间戳)
@Temporal(TemporalType.TIMESTAMP)
@Column("MY_DATE")
private java.util.Date myDate;
从Hibernate的调试日志,我可以看到创建的列是同一类型的两个项目:
create table MY_TABLE (
...
MY_DATE timestamp,
...
)
测试模型总是给定类型java.sql.Date
的对象出于某种原因,但是,在一个项目中,当我和一个Hibernate查询检索数据,类型为java.sql.Date
,而在其他的项目,它是java.sql.Timestamp
。
什么可能导致这种行为差异,以及如何一致地将此数据作为java.sql.Date
?
(请记住,我只测试代码的控制,我不能改变应用代码。)
Upvoted为LocalDateTime'的'的建议或分区等同。如果你正在使用Java 6或7,有人说今天[java.time的后端](http://www.threeten.org/threetenbp/)是比Joda-Time更好的选择。 –
Upvoted因为它把我放在正确的轨道上。尽管在应用程序代码中,人们只想引用java.util.Date,但在测试代码中这是不可能的。我需要使用'.equals'来比较从Hibernate返回的日期,'Timestamp.equals'对于'Date'的实例返回false,即使它们具有相同的毫秒值。除非我在这里失去了一些东西,那就是。 – ds390s