简体   繁体   中英

How to add date in mysql database from Hibernate/Spring Jpa

I use spring boot, and I want to add 1 year to a specific column in mysql database

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();

But I get the folowing error:

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

Have you please any suggestions to do this.

You're using Hibernate 6 (I can tell by the error message), so the correct HQL syntax to use is:

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

You had three errors in your query:

  1. You referred to the name of a table instead of the name of an entity class in the UPDATE clause.
  2. You used the unportable MySQL DATE_ADD function instead of the portable HQL date/time arithmetic described here .
  3. The syntax of your WHERE clause was garbled.

Perhaps you meant for this to be a native SQL query, in which case you called the wrong method of Session . But there's no need to use native SQL for the above query. As you can see, HQL is perfectly capable of expressing that query.

You can use SQL directly, via createNativeQuery, or register a new function as shown in this example to call it from HQL

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM