I am deleting old objects from an Oracle database using Hibernate. The following code is working fine but for many rows the rollback segment is too small and it is not possible to extend it any further.
Code:
final String query = "delete MyClass "
+ "where date < :date ";
mSes.createQuery(query)
.setParameter("date", start)
.executeUpdate();
So I tried to setMaxResults() but it doesn't seem to affect a delete query. Hibernate tries to delete all rows.
Code:
final String query = "delete MyClass "
+ "where date < :date ";
mSes.createQuery(query)
.setParameter("date", start)
.setMaxResults(max)
.executeUpdate();
So I tried using an SQL query but got an
Quote:
java.lang.UnsupportedOperationException: Update queries only supported through HQL
Code:
final String query = "delete from T_MyClass "
+ "where date < :date and rownum < 3000 ";
mSes.createSQLQuery(query)
.setParameter("date", start)
.executeUpdate();
Is there a way to batch delete at most a given number of objects?
Hibernate version: 3.0.5
Name and version of the database: Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production