Hibernate Dilects + Функция Dateiff
Вопрос
У меня проблема в том, что синтаксис для Dateiff в MySQL отличается от этого в HSQLDB:
mysql: datediff(date1,date2)
hsqldb: datediff(interval,date1,date2)
Диалекты в гибернации обычно решают эти проблемы, однако я не смогу найти способ создания ограничения датиффа для гибернации. Это реальная неприятность, потому что это предотвращает тестирование устройства с базой данных HSQL в памяти, поскольку я должен «жесткодей» формата Dateiff в операторе SQL.
Если у кого-то есть совет по этому вопросу, было бы очень оценено.
Решение
Я бы сказал, что самое простое решение состоит в том, чтобы создать свой собственный пользовательский диалект HSQLDB, расширяя существующий диалект HSQLDB. Затем в конструкторе зарегистрируйте функцию для обработки Dateiff (Date1, Date2), чтобы переводиться в Dateiff (интервал, дату1, дату 2), при условии, что интервал будет статическим значением. Что-то вроде этого:
registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );