Я пытаюсь выяснить, как выполнить массовое удаление в отношении @ManyToOne, но пока безуспешно.
Сценарий:
Родитель имеет много загрузок, я хочу выполнить удаление всех загрузок, где родительская дата равна > :some_date
. Я не хочу удалять какие-либо записи Родителя, только записи Загрузки. Загрузка имеет родительское поле, которое отображается с помощью аннотации @ManyToOne.
Я пытаюсь использовать @NamedQuery на объекте Download для достижения этой цели.
//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
Есть предложения?