0
我有一個像休眠全刪除,孤兒有序集合
<set name="someBeans" table="sometable" cascade="all, delete-orphan" inverse="true" lazy="true">
<key column="some_id" />
<one-to-many class="someBean" />
</set>
的關係在我的Java代碼中有關於這裏面就像
執行一套myClass.setSomeBeans(SomeBeans);
現在這個SomeBeans是linkedHashmap,所以訂單被保留,但因爲所有刪除孤兒正在使用級聯我在特定情況下得到例外,如下所示:
HibernateException – A collection with cascade=」all-delete-orphan」 was no longer referenced by the owning entity instance
所以我改變以上
myClass.getSomeBeans().clear();
myClass.getSomeBeans().addAll(SomeBeans)
但是這樣做我不能夠從LinkedHashMap的SomeBeans維持秩序的Java實現。
有沒有人遇到這樣的問題,也是在這方面的任何幫助將appriciated
問候,
Vaibhav的
當Hibernate從數據庫加載集合時,它不會使用LinkedHashSet,因此順序是任意的。你爲什麼要在這種特殊情況下保存它?依賴於由Hibernate維護的集合中的插入順序沒有多大意義。 –
訂單存儲在一個不同的表中,所以我需要將該訂單應用於SomeBeans,然後在我的java代碼中執行SetSomeBeans(),該代碼開始給出上述異常,我嘗試了clear()方法,然後addAll ),hibernate不會保留順序,因此解決方案與SomeBeans的順序混亂。 – vaibhav
你還沒有明白。比方說,Hibernate按照原樣進行設置,並保持關聯。現在開始一個新的事務,並從數據庫重新加載實體及其集合。 Hibernate不會奇蹟般地保存集合中bean的順序。它將創建一個無序的非鏈接集合,並且這些實體的順序將是任意的。所以依靠實體的插入順序是愚蠢的。 –