Я работаю над Java-проектом, полным картографических файлов Hibernate (3.3.1), которые имеют следующую декларацию для большинства объектов домена.
<property name="dateCreated" generated="insert">
<column name="date_created" default="getdate()" />
</property>
Проблема здесь в том, что getdate () является специфической функцией MSSQL, и когда я использую что-то вроде H2 для тестирования подразделов проекта, H2 кричит, что
getdate()
не распознанная функция.Его собственная функция отметки времени -
current_timestamp().
. Я хотел бы продолжить работу с H2 для тестирования и хотел бы узнать, есть ли способ сообщить Hibernate "использовать собственный механизм этой базы данных для извлечениятекущая метка времени ".С H2, я пришел к следующему решению.
CREATE ALIAS getdate AS $$ java.util.Date now() { return new java.util.Date(); } $$;
CALL getdate();
Это работает, но, очевидно, специфично для H2.
Я пытался расширить H2Dialect и зарегистрировать функцию getdate (), но это не вызывается, когда Hibernateсоздание таблиц.Можно ли абстрагировать идею временной метки по умолчанию от конкретного механизма базы данных?