2015-10-19 66 views
1

我試圖在Hibernate公式中使用DATE_ADD(Mysql)函數。在Hibernate中使用DATE_ADD @Formula

這是我的領域:

@Formula(value = "(SELECT DATE_ADD(v.dataAndata, INTERVAL v.minutiTrasportoAndata MINUTE) FROM VenditaB2B v WHERE v.id = id)") 
private Date dataImbarco; 

不幸的是,當Hibernate並不查詢其轉換的查詢爲:

(SELECT DATE_ADD(v.dataAndata, venditab2b0_.INTERVAL v.minutiTrasportoAndata venditab2b0_.MINUTE) FROM VenditaB2B v WHERE v.id = venditab2b0_.id) as formula5_ 

,當然這是因爲它認爲分鐘間隔的列是錯的我的餐桌VenditaB2B。 我嘗試用單引號和雙引號沒有運氣。

有辦法解決這個問題嗎?謝謝!

+1

您將在這裏找到答案:SEPARATOR關鍵字不處於休眠公式正常工作(http://stackoverflow.com/questions/32688660/separator-keyword -not-working-properly-in-hibernate-formula) –

回答

0

休眠不支持MySQL的DATE_ADD語法。所以,你必須使用本機查詢

編號:https://forum.hibernate.org/viewtopic.php?f=1&t=982311&view=next

+0

我知道這不被支持。 Infact我使用我的自定義方言,我添加了registerFunction(「date_add_interval」,新的SQLFunctionTemplate(StandardBasicTypes.DATE,「DATE_ADD(?1,INTERVAL?2?3)」));這個功能。但公式似乎使用本機查詢。 Inform date_add_interval在@Formula中不被識別爲有效函數。 – drenda

+0

'@ Formula'中的查詢已經是本地查詢了。 但是似乎有些mysql結構不受支持。真的不知道,但也許'@ Formula'支持'@ Column'中的關鍵字轉義語法:'[INTERVAL] v.minuti [MINUTE]'。 – wdrai

+0

你使用哪種MySQL方言? – Rehman