2015-10-19 103 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