Pergunta

Eu tenho um problema, pois a sintaxe do Datediff em MySQL é diferente daquele no HSQLDB:

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

Os dialetos no hibernato geralmente resolvem esses problemas, no entanto, não pareço encontrar uma maneira de criar uma restrição de datatediff para o hibernado. Este é um incômodo real, porque me impede de testar com um banco de dados HSQL na memória, pois tenho que 'codificar' o formato do datediff em uma instrução SQL.

Se alguém tiver conselhos sobre esse assunto, seria muito apreciado.

Foi útil?

Solução

Eu diria que a solução mais fácil é criar seu próprio dialeto HSQLDB personalizado, estendendo o dialeto HSQLDB existente. Em seguida, no construtor, registre uma função para lidar com o datediff (date1, date2) a ser traduzido em datediff (intervalo, date1, date2), desde que esse intervalo seja um valor estático. Algo assim:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top