Hibernate Диалекты + функция Datediff - PullRequest
2 голосов
/ 05 января 2011

У меня есть проблема в том, что синтаксис для datediff в mysql отличается от синтаксиса в hsqldb:

mysql: datediff(date1,date2)
hsqldb: datediff(interval,date1,date2)

Диалекты в hibernate обычно решают эти проблемы, однако я, кажется, не могунайти способ создания ограничения для датериффа для спящего режима.Это очень неприятно, потому что мешает мне проводить модульное тестирование с базой данных hsql в памяти, поскольку мне приходится «жестко кодировать» формат datediff в выражении sql.

Если у кого-то есть советы по этому вопросу, это будетс благодарностью.

1 Ответ

4 голосов
/ 06 января 2011

Я бы сказал, что самым простым решением является создание собственного настраиваемого диалекта HSQLDB, расширяющего существующий диалект HSQLDB. Затем в конструкторе зарегистрируйте функцию для обработки datediff (date1, date2) для преобразования в datediff (интервал, date1, date2), при условии, что интервал будет статическим значением. Примерно так:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
...