У меня есть приложение, в котором я создал сопоставления сущностей в Hibernate, поэтому я мог иметь доступ к некоторым устаревшим таблицам на SQL Server 2005. Все работало нормально и, как и ожидалось, до тех пор, пока база данных не была переведена на более новую версию SQL Server - в частности, для SQL Server 2008.
При перемещении данных все столбцы даты и времени в таблицах были изменены на datetime2, и теперь при запуске веб-приложения на tomcat я получаю сообщение об ошибке:
Caused by: org.hibernate.HibernateException: Wrong column type (...)
Found: datetime2, expected: datetime
Как правильно изменить конфигурацию в спящем режиме, чтобы отразить это изменение? Все сущности определяются с помощью аннотаций везде, где это возможно, все для конкретной базы данных c
Не знаю, насколько это актуально, но вот версии программного обеспечения, которые я использую:
- Hibernate 3.6.4.Final
- jTDS драйвер 1.2.5
Большое спасибо.
Редактировать: решение найдено
Благодаря предложениям ManuPK я перешел с jTDS на драйвер Microsoft, к сожалению, после обновления настроек веб-приложения я все еще получал ту же ошибку. Я решил это, создав собственный класс, который расширяет SQLServer2008Dialect
и регистрирует datetime2
как новый тип столбца. Я не знаю, правильное ли это решение, но оно работает.
public class UpdatedSQLServerDialect extends SQLServer2008Dialect {
public UpdatedSQLServerDialect () {
super();
registerColumnType(Types.DATE, "datetime2");
}
}