Не удается определить двунаправленную связь «один ко многим» с таблицей соединений - PullRequest
0 голосов
/ 23 марта 2010

Я пытаюсь выяснить это отображение, и каким-то образом оно просто ускользает от меня. Это раздражает, потому что кажется, что это должно быть обычным делом.

У меня есть базовый класс Parent и Child с таблицей соединений между ними. Дочерний класс зависит от Родителя: если Дочерний удален из Родителя, Дочерний также должен быть удален. Документы Hibernate говорят, что это работает, указав cascade = "all, delete-orphan".

Но схема этого не позволяет. Если я использую <один-ко-многим>, я не могу указать столбец, и объединение не будет работать. Если я использую для документов Hibernate, я не могу указать каскад.

Вот то, что у меня сейчас есть, взято из документов Hibernate :

<class name="Parent" table="parent_table">
    <id name="id" column="id">
        <generator class="assigned"/>
    </id>
    <property name="name" type="string"/>
    <list table="my_join_table" name="children">
        <key column="parent_id"/>
        <list-index column="idx">
        <!-- how do I put a cascade on this!? -->
        <many-to-many column="child_id" 
                      class="Child"
                      unique="true"/>
    </list>
</class>

<class name="Child" table="child_table">
    <id name="id" column="id">
        <generator class="assigned"/>
    </id>
    <property name="name" type="string"/>
    <join table="my_join_table" inverse="true" optional="false">
        <key column="child_id"/>
        <many-to-one name="parent" column="parent_id" not-null="true"/>
    </join>
</class>

1 Ответ

0 голосов
/ 23 марта 2010

Хорошо, я, наконец, понял это.

Атрибут cascade должен указывать на элемент списка, а не на «многие ко многим»:

 <list table="my_join_table" name="children" cascade="all,delete-orphan">
    <key column="parent_id"/>
    <list-index column="idx">
    <!-- how do I put a cascade on this!? -->
    <many-to-many column="child_id" 
                  class="Child"
                  unique="true"/>
</list>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...