2011-01-05 126 views
2

我有一個問題,即在mysql的DATEDIFF語法不同於在HSQLDB:Hibernate的方言+ DATEDIFF函數

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

休眠的方言通常解決這些問題,但是我好像不能夠找到一種爲休眠創建時間限制的方法。這是一個真正的麻煩,因爲它阻止了我使用內存中的hsql數據庫進行單元測試,因爲我必須在sql語句中「硬編碼」datediff的格式。

如果任何人有關於此事的建議,將不勝感激。

回答

4

我會說最簡單的解決方案是創建自己的自定義HSQLDB方言,擴展現有的HSQLDB方言。然後,在構造函數中,註冊一個函數來處理datediff(date1,date2),將其轉換爲datediff(interval,date1,date2),前提是間隔應該是一個靜態值。類似這樣的:

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