JPA / Hibernate отображают простую строку или произвольный объект в MySQL тип даты? - PullRequest
1 голос
/ 27 июня 2011

Я довольно новичок в Hibernate.Я хочу сопоставить некоторый объект, скажем, String с датой mysql (которая является датой без времени или часового пояса).Я думал, что это будет довольно просто.Но я не могу найти хорошее решение.

В моем реальном приложении я не использую строку.Я хочу использовать что-то вроде LocalDate в JSR 310 или мой собственный простой триплет типа месяц-дата-год. ​​

Я действительно ... действительно не хочу писать какой-либо внутренний установщик или получатель, который переводит мой простой объектв java.sql.Date или java.util.Date, потому что:

  1. Раздувает объект домена ненужным кодом.
  2. Я должен написать один и тот же код во всехмои доменные объекты
  3. Это своего рода побеждает всю мою цель использования этого типа класса.Весь смысл использования этих классов состоит в том, чтобы избежать возможных проблем с часовым поясомКажется действительно глупым вводить класс (java.sql.Date или java.util.Date), который имеет время и часовой пояс, когда я хочу сохранить только простую дату (например, дату рождения - 1 октября 2005 г.).

Я полагаю, что основная проблема заключается в том, что драйвер JDBC может только сопоставить основные классы Java-дат с типами дат MySQL ???

Ответы [ 2 ]

2 голосов
/ 27 июня 2011

Могу ли я порекомендовать вам посмотреть на уже существующее решение и посмотреть, если вы не можете либо:

  1. Используйте его в своем собственном коде
  2. Используйте это как пример, чтобы вдохновить ваш код

http://joda -time.sourceforge.net / вно / спящий режим / index.html

Я лично рекомендую Joda Time для ваших нужд времени / даты, и для этого уже есть мост Hibernate. Запрет на использование Joda Time, посмотрите приведенный выше URL-адрес и код моста гибернации в качестве инструкции по написанию конвертера.

0 голосов
/ 27 июня 2011

Поскольку у вас есть String для ваших столбцов даты, я думаю, что нет другого выхода, кроме добавления вспомогательных методов для преобразования.Однако, когда используются часовые пояса, лучше всего передавать даты в миллис (длинных), которые можно легко использовать для создания объектов Date.Часовой пояс может быть применен по мере необходимости.Поэтому используйте стандартные классы Date, которые имеют сопоставления с типами дат mysql.

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