Процедура обратного проектирования Hibernate, сгенерированная @Temporal (TemporalType.TIMESTAMP) для DateTime - PullRequest
1 голос
/ 07 апреля 2010

Поля в БД имели тип DATETIME (mysql).

Почему он был создан как отметка времени и будет ли он восстановлен

во время сохранения объекта? Это не желаемый сценарий в моем случае,

видя, что поле не является отметкой времени, означает, что оно должно быть установлено только через сеттер

генерация не нужна, я не совсем понимаю, почему она не генерирует его как тип даты!

p.s. Проблема, как я вижу в этом драйвере mysql JDBC, возвращает тип datetime как TIMESTAMP! Как решить все это?

Ответы [ 4 ]

1 голос
/ 22 февраля 2012

Тип данных в Hibernate

@Temporal(TemporalType.DATE)    = date
@Temporal(TemporalType.TIME)    = hour
@Temporal(TemporalType.TIMESTAMP) =date + hour

Hibernate не заботится о базе данных или типе, Hibernate просто пытается привести ее. Кстати, в хранилищах OracleBD DATE (дата + час) и TIMESTAMP (дата + час + ... милисек).

если база данных дает вам метку времени, вы должны поставить что-то вроде этого:

@Temporal(TemporalType.TIMESTAMP)
Date myProp;

http://javahelp.redsaltillo.net

1 голос
/ 07 апреля 2010

Аннотация @Temporal обозначает, должно ли аннотированное свойство отображаться на java.sql.Date (содержит только часть даты), java.sql.Time (содержит только часть времени) или java.sql.Timestamp (содержит дату и время также с долями второй). Это не имеет ничего общего с генерацией стоимости имущества.

0 голосов
/ 07 апреля 2010

Я думаю о двух возможностях: Hibernate не знает о типе данных «dateTime» для mysql или «dateTime», явно сопоставленных с java.sql.Timestamp или java.utils.Date (для которого требуется TemporalType.Timestamp аннотация). И это отображение, вероятно, можно изменить.

0 голосов
/ 07 апреля 2010

Не зная внутренней работы hibernate, у нас есть поля даты в базе данных (mysql) как date. Не DATETIME. Может быть, поэтому он сгенерировал метку времени.

Вам следует рассмотреть возможность изменения таблиц дат на дату, а затем вы можете изменить компоненты управления данными и удалить @Temporal

В любом случае, вероятно, можно полностью удалить @Temporal(TemporalType.TIMESTAMP) из бинов сущностей, если это не то, что вам нужно.

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