Я обновил сервер MySQL 5.1 до 5.6. После этого я испытываю странное поведение DATETIME (спящий тип timestamp). По какой-то причине мои даты меняются от (например) '2012-09-30 23:59:59' до '2012-10-1 00:00:00' после сохранения объекта спящего спящего режима. В моем журнале говорится, что я действительно сохраняю одну секунду до полуночи, но когда я смотрю на базу данных, она изменилась на начало следующего дня. Если я делаю запрос INSERT с той же датой, он работает без проблем.Странное поведение DATETIME с Hibernate и MySQL 5.6
Согласно документации MySQL не должно быть никаких преобразований в часовом поясе с DATETIME. Я также тестировал с MySQL 5.5, и я не мог воспроизвести ту же проблему.
Мое отображение HBM выглядит следующим образом:
<composite-id>
...
<key-property name="timestamp" type="timestamp" column="timestamp"/>
</composite-id>
EDIT: У меня также есть последний драйвер JDBC для MySQL.
РЕДАКТИРОВАТЬ 2: Как вы видите, изменения даты.
22.04.13 12:04:54.149 DEBUG SQL:104 - insert into data_table (col_1, col_2, timestamp) values (?, ?, ?)
22.04.13 12:04:54.149 TRACE BasicBinder:83 - binding parameter [1] as [DOUBLE] - 1.0
22.04.13 12:04:54.149 TRACE BasicBinder:83 - binding parameter [2] as [INTEGER] - 1
22.04.13 12:04:54.150 TRACE BasicBinder:83 - binding parameter [3] as [TIMESTAMP] - Mon Apr 22 23:59:59 EEST 2013
22.04.13 12:04:54.151 ERROR SqlExceptionHelper:144 - Duplicate entry '1-2013-04-23 00:00:00' for key 'PRIMARY'
РЕДАКТИРОВАТЬ 3: Проблема воспроизведена в версиях спящего режима 3.3.1 и 4.1.9.