Отображение 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"/>
Другие вопросы по тегам