J'essaie de comprendre comment exécuter une suppression groupée sur une relation @ManyToOne, jusqu'à présent sans succès.Comment exécuter une suppression groupée avec une relation dans EJB3
Scénario:
Parent a beaucoup de téléchargements, je veux exécuter une suppression de tous les téléchargements lorsque la date de Parent est > :some_date
. Je ne veux supprimer aucun des enregistrements parent, seulement les enregistrements de téléchargement. Le téléchargement a un champ parent qui est mappé en utilisant une annotation @ManyToOne. J'essaie d'utiliser @NamedQuery sur l'entité Download pour accomplir ceci.
//this OQL tries to delete from both the child and parent tables
//I only want to delete from the Download table
DELETE FROM Download dwn
WHERE dwn.acctId = :acctId AND dwn.parent.date > :date
//this OQL is invalid and will keep the bean from deploying
//The example I found used this sub query but with a @OneToMany relationship
//instead of a @ManyToOne relationship
//this is what i get for an error on deployment:
//"Errors in named queries: deleteByAccountIdAndDownloadedDate"
DELETE FROM Download dwn WHERE EXISTS
(SELECT p from dwn.parent WHERE p.date > :date)
AND dwn.acctId = :acctId
Des suggestions?
Je vérifierai les paramètres de cascade de mon DBA. –
N'oubliez pas que la cascade peut être spécifiée au niveau JPA (lors de la définition des relations) et/ou dans la base de données. –