У меня проблема с двунаправленным доступом через соединительную, которая работает в одном направлении, а не в другом. Мне пришлось анонимизировать определения, но, надеюсь, все существенное все еще существует. Сценарий:Двунаправленный доступ Hibernate и незаконный доступ к сборке погрузки
MASTER - это основная таблица, которая имеет взаимно однозначное сопоставление с двумя таблицами A_SECTION и B_SECTION, которые являются подразделами основной записи, и все три имеют общий идентификатор. Это существующая конфигурация, которая работала годами.
Я добавил таблицу TIA_TIB_SHARE, которая представляет собой многозначное соотношение между двумя строками в таблице MASTER - это связывает A_SECTION с одним с B_SECTION на другом. Обе отношения идентичны, насколько я могу судить, но при доступе от MASTER через A_SECTION к другому 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