"Повторяющийся столбец в отображении" при отображении класса в существующий список объектов
Я добавляю ResourcePermission
к объекту Report
, каждый Query
объект может иметь отношение один к одному. Query
продолжается Resource
и имеет ResourcePermission
в один-ко-многим (один запрос ко многим разрешениям).
Мне нужно добавить то же свойство в Report
объект, связанный с Query
потому что он может иметь разные разрешения. Когда я добавляю список и карту один Query
слишком много Permission
отношения, которые я получаю
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: com.bio.ResourcePermission column: resource_id (should be mapped with insert="false" update="false")
Что я не понимаю, почему, Report
не распространяется Query
или же Resource
и, следовательно, он не отображается дважды. Может ли стол просто не быть many
для нескольких отношений один ко многим?
<class name="com.bio.Report" table="REPORT">
<id name="id" type="long" column="id">
<generator class="foreign">
<param name="property">query</param>
</generator>
</id>
<property name="name" column="name"/>
<!--Trying to add this list mapping breaks it-->
<bag name="permissions" table="RESOURCE_PERMISSION">
<key column="resource_id" not-null="true"/>
<one-to-many class="com.bio.ResourcePermission"/>
</bag>
<!-- This query extends Resource-->
<one-to-one name="query" class="com.bio.Query" />
</class>
Это оригинальный элемент, который имел ResourcePermissions
<class name="com.bio.Resource" table="RESOURCE">
<id name="id" type="long" column="id">
<generator class="native">
<param name="sequence">SEQ_RESOURCE_AUTO</param>
</generator>
</id>
<bag name="permissions" table="RESOURCE_PERMISSION" lazy="true" batch-size="50" cascade="all-delete-orphan">
<key column="resource_id" not-null="true"/>
<one-to-many class="com.bio.ResourcePermission"/>
</bag>
</class>
Отображение разрешений
<class name="com.bio.ResourcePermission" table="RESOURCE_PERMISSION">
<id name="id" type="long" column="id">
<generator class="native">
<param name="sequence">SEQ_RES_PERM_AUTO</param>
</generator>
</id>
<property name="canEdit" column="edit"/>
<property name="canView" column="can_view"/>
<property name="canRun" column="run"/>
<property name="everyone" column="everyone"/>
</class>
1 ответ
Я должен был установить inverse="true"
на Report
картографирование с ReportPermission
будет нести ответственность за отношения.
<bag name="permissions" table="RESOURCE_PERMISSION" inverse="true">
<key column="resource_id" not-null="true"/>
<one-to-many class="com.bio.ResourcePermission"/>
</bag>