Droit - Je souhaite supprimer (par exemple) 1 000 000 enregistrements d'une base de données. Cela prend beaucoup de temps -> la transaction expire et échoue. Donc, je les supprime par lots, disons 25000 enregistrements par transaction. Utilisation de la clause limit sur MySQL ou ROWNUM sur Oracle. Super ça marche.Suppression par lots/purge d'enregistrements via Java ORM
Je veux faire cela dans une base de données indépendante. Et à partir d'une base de code Java existante qui utilise JPA/Hibernate.
De la chance. JPA Query.setMaxResults et setFirstResult n'ont pas d'effet pour l'écriture des 'requêtes' (suppression par exemple). Sélectionnant de nombreuses entités en mémoire pour les supprimer individuellement est très lent et bête je dirais. Donc, j'utilise une requête native et gère la clause 'limit' dans le code de l'application. Ce serait bien d'encapsuler cette clause dans orm.xml mais ... "Hibernate Annotations 3.2 ne supporte pas les mises à jour/suppressions groupées en utilisant des requêtes natives." - http://opensource.atlassian.com/projects/hibernate/browse/ANN-469.
J'imagine que c'est un problème commun. Quelqu'un at-il une meilleure solution indépendante de base de données?
Je pense que la question-asker est déjà en train de le faire, mais en trouvant que la suppression est si lente, elle expire. –