我有一個問題,通過聯接表,雙向訪問,在一個方向,而不是在其他。我不得不匿名定義,但希望所有重要的東西都在那裏。場景是:休眠的雙向訪問和非法訪問加載收集
MASTER是一個具有兩個表A_SECTION和B_SECTION的一對一映射的主表,它們是主記錄的子部分,所有三個表共享一個公共ID。這是一個已經工作了多年的現有配置。
我添加了一個TIA_TIB_SHARE表,它表示MASTER表中兩行之間的許多關係 - 它將A_SECTION與另一個上的B_SECTION鏈接在一起。就我所知,兩種關係都是相同的,但是當通過A_SECTION從MASTER通過連接表訪問另一個MASTER時,如果從B_SECTION側訪問另一行,則會出現「非法訪問加載集合」錯誤。我試過沒有任何成功的延遲加載。
任何人都可以提供任何建議,爲什麼這項工作在一個方向,而不是在另一個,或我可以採取什麼步驟來診斷?我已經提取了下面的Hibernate映射文件的相關位 - 所有的映射都是XML格式的,並且沒有使用註釋。
在此先感謝...
<class name=」Master」 table=」MASTER」 where=」is_deleted=’N’」>
<id name=」id」 column=」ID」 type=」long」>
<generator class=」native」 />
</id>
<one-to-one name=」sectionA」 class=」SectionA」 />
<one-to-one name=」sectionB」 class=」SectionB」 />
</class>
<class name=」SectionA」 table=」A_SECTION」 where=」is_deleted=’N’」>
<id name=」id」 column=」ID」 type=」long」>
<generator class=」native」 />
</id>
<one-to-one name=」master」 class=」Master」
constrained=」true」 />
<set name=」shared」 sort=」natural」>
<key column=」TIA_ID」 />
<one-to-many class=」Share」 />
</set>
</class>
<class name=」SectionB」 table=」B_SECTION」 where=」is_deleted=’N’」>
<id name=」id」 column=」ID」 type=」long」>
<generator class=」native」 />
</id>
<one-to-one name=」master」 class=」Master」
constrained=」true」 />
<set name=」sharing」 sort=」natural」>
<key column=」TIB_ID」 />
<one-to-many class=」Share」 />
</set>
</class>
<class name=」Share」 table=」TIA_TIB_SHARE」>
<id name=」id」 column=」ID」 type=」long」>
<generator class=」native」 />
</id>
<many-to-one name=」sharingA」 class=」SectionA」
cascade=」all」 update=」true」 insert=」true」 column=」TIA_ID」 />
<many-to-one name=」sharedB」 class=」SectionB」
cascade=」all」 update=」true」 insert=」true」 column=」TIB_ID」 />
</class>
已經做了更多的測試,看起來只有在多個集合包含多個行時纔會出現錯誤。有任何想法嗎? – boston1832