考慮以下JPQL查詢:如何清除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。而不是迭代每個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。但也許有人在這裏知道解決方法?
沒錯。但爲了表現,我試圖在一個JPQL語句中這樣做。 –
更新我的回答 –