2015-03-20 3 views
1

У меня есть hibernate, настроенный как автоматическое обновление. У меня есть mssql-сервер 2012. Hibernate создает объекты java.util.Date как datetime2 в базе данных. Есть ли возможность заставить hibernate создавать дату и время в базе данных?использовать datetime вместо datetime2 sqserver hibernate

Я знаю, что я могу использовать аннотации в полях в моем объекте, но их слишком много. Поэтому я хотел бы настроить hibernate, чтобы каждый java.util.Date автоматически включался в базу данных datetime.

+0

зачем вам нужен DateTime? – meskobalazs

+0

Другие программы также используют базу данных и не могут обрабатывать с помощью datetime2 – jps90

ответ

1

Первое, что приходит мне на ум - это определение нового Hibernate Dialect, который сопоставляет типы данных Java с datetime, а не по умолчанию datetime2.

Полный пример класса:

public class ModifiedSQLServerDialect extends SQLServer2008Dialect { 
    public ModifiedSQLServerDialect() { 
     super(); 
     registerColumnType(Types.TIMESTAMP, "datetime"); 
    } 
} 

Если посмотреть на источник SQLServer2008Dialect (при условии, Hibernate 4,3), вы можете увидеть, что Types.TIMESTAMP отображается "datetime2", мы эффективно переосмысление его в наших собственных ModifiedSQLServerDialect.

Используя новый диалект

Чтобы использовать новый диалект, мы только что определили, что вам нужно добавить следующее свойство в файле persistence.xml:

<property name="hibernate.dialect" value="com.example.ModifiedSQLServerDialect" /> 
+0

Спасибо, это именно то, что мне нужно! – jps90