我正在使用Java Date和Hibernate,然后将其保存在数据库中(Postgresql)。我在休眠方面不是那么好
映射文件的一部分
<property name="DateOfBirth" type="java.util.Date">
<column name="DATEOFBIRTH" />
</property>
我正在使用GWT日期选择器短日期格式,即yyyy-MM-dd。我使用
从日期选择器中获取值View.getUserDateOfBirth().getValue()
但是当我将日期2010-11-30保存到日期库时,它将其保存为
2010-11-30 00:00:00
而不是2010-11-30
所以,我希望它以这种格式保存在数据库中2010-11-30 ??
我有许多这样的时间戳,但我无法配置它。我想这部分
<property name="DateOfBirth" type="java.util.Date">
<column name="DATEOFBIRTH" />
</property>
应该改变,但我不知道该改变什么
答案 0 :(得分:1)
您是否尝试过指定:
<property name="DateOfBirth" type="date">
<column name="DATEOFBIRTH" />
</property>
此外,除了pablochan所说的,我还要检查Postgres使用的列类型 - 它应该是DATE,它只存储日期。如果它是TIMESTAMP,那么它将存储日期和时间。
答案 1 :(得分:0)
如果DATEOFBIRTH
列是日期,那么这是正确的,你没有存储时间信息,但你必须记住java.util.Date
有时间信息(所以它就像一个时间戳),当你读数据库中的日期时间将设置为00:00:00,因为该数据在存储到数据库时被截断。
答案 2 :(得分:0)
如果您不想要时间信息,可以使用java.sql.Date而不是java.util.Date。
答案 3 :(得分:0)
Britishmuu答案是正确的,您应该使用type
属性来指定希望Hibernate在数据库中生成的数据类型,而不是Java用来保存此值的数据类型。
此配置:
<property name="DateOfBirth" type="date">
<column name="DATEOFBIRTH" />
</property>
将告诉Hibernate生成一个名为DATEOFBIRTH的列,其日期类型为:
CREATE TABLE "User"
(
"DATEOFBIRTH" date
)
然后,该值将作为2010-11-30
存储在您的数据库中