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 - это внешний ключ, относящийся к столбцу pim_tenant tenant_id , имя столбца внешнего ключа отличается от имени основной таблицы (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 в соответствии с нашей структурой базы данных.

Кто-нибудь, пожалуйста, помогите мне, я пробовал много способов, но ничего не работает.

0
Amol Chaudhari 18 Апр 2020 в 10:59

1 ответ

Лучший ответ

Это из-за этой строки:

<key column="tenant_id" not-null="true"/>

Это столбец внешнего ключа, и он должен быть

<key column="owner_tenant_id" not-null="true"/>
1
Simon Martinelli 18 Апр 2020 в 08:26