@ManyToOne 関係で一括削除を実行する方法を見つけようとしていますが、これまでのところ成功していません。
シナリオ:
親には多くのダウンロードがあります。親の日付が であるすべてのダウンロードの削除を実行したいと考えています> :some_date
。親レコードは削除したくありません。ダウンロード レコードだけを削除します。Download には、@ManyToOne アノテーションを使用してマップされた親フィールドがあります。
これを実現するために、Download エンティティで @NamedQuery を使用しようとしています。
//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
助言がありますか?