如何在Hibernate/Spring Jpa中添加mysql数据库中的日期

z2acfund  于 2023-01-20  发布在  Spring
关注(0)|答案(2)|浏览(160)

我用的是spring Boot ,我想在mysql数据库的某个特定列上加1年

String queryRecherche = "UPDATE myTable t SET t.dateDebut = DATE_ADD(t.dateDebut, INTERVAL 1 YEAR) WHERE.id = 3 ";
Query query = em.createQuery(queryRecherche);;
query.executeUpdate();

但我得到以下错误:

org.hibernate.query.sqm.ParsingException: line 1:66 no viable alternative at input 'DATE_ADD(t.dateDebut,INTERVAL1'

请问你对做这件事有什么建议吗?

fcy6dtqo

fcy6dtqo1#

您使用的是Hibernate 6(我可以从错误消息中看出),因此要使用的正确HQL语法是:

UPDATE MyEntity t SET t.dateDebut = t.dateDebut + 1 year WHERE t.id = 3

查询中出现三个错误:
1.您在UPDATE子句中引用了表的名称,而不是 * 实体类 * 的名称。
1.您使用了不可移植的MySQL DATE_ADD函数,而不是这里描述的可移植的HQL日期/时间算法。
1.您的WHERE子句语法有误。
也许您希望这是一个原生SQL查询,在这种情况下,您调用了Session的错误方法。但是,对于上面的查询,不需要使用原生SQL。正如您所看到的,HQL完全能够表达该查询。

i7uq4tfw

i7uq4tfw2#

您可以通过createNativeQuery直接使用SQL,或者注册一个新函数(如example所示),以便从HQL调用它

相关问题