在postgresql中通过hibernate保存java日期时的GWT日期选择器格式问题

时间:2010-12-29 08:18:52

标签: java database hibernate gwt date

我正在使用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>

应该改变,但我不知道该改变什么

4 个答案:

答案 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

存储在您的数据库中