GWT Date Picker Format проблема при сохранении даты Java через Hibernate в Postgresql - PullRequest
0 голосов
/ 29 декабря 2010

Я использую Java Date и Hibernate, который затем сохраняется в базе данных (Postgresql). Я не так хорош в спящем режиме

Часть файла сопоставления

<property name="DateOfBirth" type="java.util.Date">
            <column name="DATEOFBIRTH" />
</property>

Я использую средство выбора даты GWT. Короткий формат даты, т. Е. Гггг-мм-дд. Я получаю значение из средства выбора даты, используя

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 ]

1 голос
/ 29 декабря 2010

Вы пытались просто указать:

 <property name="DateOfBirth" type="date">
                <column name="DATEOFBIRTH" />
    </property>

Кроме того, в дополнение к тому, что сказал Паблочан, я бы проверил, какой тип столбца использует Postgres - это должен быть DATE, который хранит только даты.Если это TIMESTAMP, то он будет хранить как дату, так и время.

0 голосов
/ 29 декабря 2010

Britishmuu ответ правильный, вы должны использовать атрибут type, чтобы указать тип данных, который вы хотите, чтобы Hibernate генерировал в вашей базе данных, а не тип данных, используемый Java для хранения этого значения.

Эта конфигурация:

<property name="DateOfBirth" type="date">
     <column name="DATEOFBIRTH" />
</property>

сообщит Hibernate о создании столбца с именем DATEOFBIRTH с типом даты:

CREATE TABLE "User"
(
  "DATEOFBIRTH" date
)

Значение будет сохранено в вашей базе данных как 2010-11-30

0 голосов
/ 29 декабря 2010

Если вам не нужна информация о времени, вы можете использовать java.sql.Date вместо java.util.Date.

0 голосов
/ 29 декабря 2010

Если столбец DATEOFBIRTH является датой, то это правильно, и вы не храните информацию о времени, но вы должны помнить, что java.util.Date имеет информацию о времени (так что это как временная метка) и когда вы читаете дату изВ базе данных время будет установлено на 00:00:00, поскольку эти данные были усечены при хранении в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...