次の JPQL クエリを検討してください。
UPATE FOO f SET f.bars = NULL
このステートメントを実行すると、例外が発生します。
java.lang.IllegalArgumentException: org.hibernate.QueryException: collections not assignable in update statements [UPATE FOO f SET f.bars = NULL ]
私がやろうとしているのは、FOO と BAR の間のすべての関連付けを1 つのステートメントで切断することです。各 FOO を反復処理してバー コレクションを null に設定する代わりに。それははるかに高速です。
残念ながら、関連付けは一方向であるため、Bar エンティティにはfoo属性がありません。したがって、JPQL はアソシエーションの反対側をクリアできます。
NEW の呼び出しも機能しません。
UPATE FOO f SET f.bars = NEW java.util.ArrayList()
これにより、別の例外が発生します。
java.lang.IllegalArgumentException: node to traverse cannot be null!
JPA/Hibernate がコレクションの関連付けを null に設定できないことは明らかです。しかし、ここにいる誰かが回避策を知っているのではないでしょうか?