Отображение XML Hibernate - когда имя столбца внешнего ключа отличается от имени столбца сопоставленной таблицы, он генерирует оба столбца в базе данных
table --> pim_tenant
<class name="PimTenant" table="pim_tenant">
<id name="tenantId" type="string" unsaved-value="null">
<column name="tenant_id" length="36" />
<generator class="uuid2"/>
</id>
<set name="workGroups" inverse="true">
<key column="tenant_id" not-null="true"/>
<one-to-many class="PimWorkgroup"/>
</set>
........................
</class>
</hibernate-mapping>
table --> pim_workgroup
<hibernate-mapping>
<class name="PimWorkgroup" table="pim_workgroup" >
<id name="workgroupId" type="string" unsaved-value="null">
<column name="workgroup_id" length="36" />
<generator class="uuid2"/>
</id>
<many-to-one foreign-key="fk_Workgroup_OwnerTenant"
name="ownerTenant" class="PimTenant" insert="false" update="false">
<column name="owner_tenant_id" length="36" />
</many-to-one>
...
</class>
</hibernate-mapping>
Я пытаюсь создать 2 таблицы, используя отображение xml в спящем режиме, в котором имя столбца внешнего ключа отличается от имени столбца связанной таблицы, которое является первичным ключом в связанной таблице. Я объяснил сценарий ниже.
Я пытаюсь создать таблицы pim_tenant и pim_workgroup, используя указанное выше сопоставление xml hibernate.
Если вы видите, что owner_tenant_id - это внешний ключ, относящийся к столбцу tenant_id pim_tenant, имя столбца внешнего ключа отличается от имени основной таблицы (pim_workgroup -> tenant_id)
При создании таблицы в pim_workgroup таблице это генерируя owner_tenant_id столбца правильно, как внешний ключ, но таблицы также имеет дополнительный новый столбец tenant_id, не знают, почему она приносит это дополнение tenant_id столбец в pim_workgroup таблице
если я изменю столбец owner_tenant_id на tenant_id, тогда он будет правильно генерировать tenant_id как внешний ключ без какого-либо дополнительного столбца
но мне нужно это имя столбца как owner_tenant_id в соответствии с нашим дизайном базы данных.
Кто-нибудь, пожалуйста, помогите мне, я пробовал много способов, но ничего не работает.
1 ответ
Это из-за этой строки:
<key column="tenant_id" not-null="true"/>
Это ключевой столбец внешнего мира, и он должен быть
<key column="owner_tenant_id" not-null="true"/>