I am using Hibernate for my ORM layer. I am trying to run a HQL query package in a single transaction (I cannot use session.update). The problem is that even transaction.commit () is at the end of the loop, update requests are triggered one by one. Is there a way to run multiple HQL queries in a single transaction?
public void updateItems() { t = session.beginTransaction(); for (int i = 0; i < itemList.size(); i++) { Query q = createUpdateQuery(session, itemList.get(i)); q.executeUpdate(); //updating one by one, and not waiting for transaction commit } t.commit(); } Query createUpdateQuery(Session session, Item item) { Query q = session.createQuery( "Update Item i set i.notes=:notes, i.time=:time, i.counter=:counter, i.status=:status Where i.id=:id and i.time=:time"); q.setParameter("time", item.getTime()); q.setParameter("status", item.getStatus()); q.setParameter("notes", item.getNotes()); q.setParameter("id", item.getId()); return q; }
Appreciate any help.
source share