Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

hibernate hql - return updated rows id list after execute update query

I'm using Hibernate Query Language(HQL) with Oracle database in my Java spring MVC application. I have write an HQL update query in this way:

String hql = "update " + MyModel.class.getName() + " e set e.field = " + value + " where ..."
//Acquiring session
...
Query query = session.createQuery(hql);
int result = query.executeUpdate();

The executeUpdate() method returns number of updated rows. But I want to get a list of the ids of updated rows after executing the update query. Is there any way of doing this in HQL?

like image 434
hamed Avatar asked Dec 27 '17 06:12

hamed


1 Answers

As far as I know there is no such functionality in JPA/Hibernate. But you can create native query and use native SQL. I do not know oracle, but in PostgreSQL I would write :

String sql = "update table set field = :values where ... returning id";
Query query = session.createNativeQuery(sql);
query.setParameter("value", value);
List ids = query.list();

May be oracle have similar functional and this will help you.

like image 150
Anton Tupy Avatar answered Sep 28 '22 22:09

Anton Tupy