I would like in a same session execute several SELECT and DELETE but the DELETE returns that no row are deleted while it should be, why ? Thanks
Traces: - History purge : 10 entries to remove by query - History purge since 2013-10-14 13:07:28.0 : 0 entries removed by query
Source code:
@Override
public void removeAllHistoryOlderThan(Date since) {
try
{
int deletedEntities = 0;
int nbRetries = 0;
Session session = getHibernateTemplate().getSessionFactory().openSession();
Query query = session.createQuery("SELECT h FROM History h WHERE h.operationDate < :since ORDER BY h.operationDate ASC").setDate("since", since).setMaxResults(10);
List list = query.list();
while ( (list.size() != 0)
&& (nbRetries < 20))
{
logger.info("History purge : " + list.size() + " entries to remove by query");
Transaction tx = session.beginTransaction();
Date maxSince = ((History)list.get(list.size()-1)).getOperationDate();
int tmpDeletedEntities = session.createQuery("DELETE History h WHERE h.operationDate < :since")
.setDate("since", maxSince)
.executeUpdate();
tx.commit();
logger.info("History purge since " + maxSince + " : " + tmpDeletedEntities + " entries removed by query");
deletedEntities += tmpDeletedEntities;
nbRetries++;
list = query.list();
}
session.close();
logger.info("History purge since " + since + " : Total = " + deletedEntities + " entries removed");
}
catch (HibernateException e)
{
logger.error(e.getMessage());
}
}