Domanda

Ho un problema in quanto la sintassi per datediff in mysql è diverso da quello in HSQLDB:

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

I dialetti in ibernazione di solito si risolvono questi problemi, però non mi sembra di essere in grado di trovare un modo per creare una restrizione datediff per Hibernate. Si tratta di un vero e proprio fastidio perché mi impedisce di test di unità con un database HSQL in memoria dal momento che ho a 'hardcode' il formato di datediff in un'istruzione SQL.

Se qualcuno ha consigli su questo tema sarebbe molto apprezzato.

È stato utile?

Soluzione

Direi che la soluzione più semplice è quello di creare il proprio personalizzato HSQLDB dialetto, estendendo il dialetto HSQLDB esistente. Poi, nel costruttore, registrare una funzione per gestire datediff (date1, date2) da tradurre in datediff (intervallo, date1, date2), purché intervallo sarebbe un valore statico. Qualcosa di simile a questo:

registerFunction( "datediff", new SQLFunctionTemplate( StandardBasicTypes.INTEGER, "datediff(interval, ?1, ?2)" ) );
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top