LocalTime
и JDB C 4.2
Возможно, вы видите корректировку часового пояса, вводимую в обмен данными. Вы можете избежать такой проблемы, используя JDB C с типами java .time .
Другие ответы и комментарии, предлагающие вам поиграть с часовыми поясами по умолчанию, на мой взгляд, ошибочны - лучше указать в коде Java часовые пояса явно, чем неявно полагаться на значения по умолчанию.
JDB C 4.2 добавлена необходимая поддержка для обмена некоторыми типами java .time . Сюда входит класс java.time.LocalTime
для представления времени суток без даты и без часового пояса.
LocalTime lt = LocalTime.parse( "02:22:22" ) ;
myPreparedStatement.setObject( … , lt ) ;
Извлечение.
LocalTime lt = myResultSet.getObject( … , LocalTime.class ) ;
Обратите внимание, что нигде в этом коде мы не использовали строки при взаимодействии с базой данных. Если вы используете этот код со столбцом в своей базе данных типа TIME
, тогда у вас не будет проблем с часовыми поясами.
Я не использую Hibernate или JPA, поэтому я не могу говорить об этом, кроме как сказать что я знаю, что и JPA 2.2, и Hibernate добавили поддержку типов java .time . Обсуждается здесь , здесь и в других местах .