Hibernate XML Mapping - когда имя столбца внешнего ключа отличается от имени столбца сопоставленной таблицы, оно генерирует оба столбца в базе данных - PullRequest
0 голосов
/ 18 апреля 2020
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 таблиц, используя отображение hibernate xml, упомянутое выше.

Если вы видите owner_tenant_id is внешний ключ, относящийся к столбцу tenant_id pim_tenant , имя столбца внешнего ключа отличается от основного таблицы (pim_workgroup -> tenant_id)

Когда таблицы создаются в pim_workgroup таблица генерирует owner_tenant_id столбец должным образом как внешний ключ, но у таблицы также есть дополнительный новый столбец tenant_id , не знаю, почему он генерирует это добавление tenant_id столбец в pim_workgroup таблица

если я изменю столбец owner_tenant_id на tenant_id , то он s генерирует tenant_id как внешний ключ должным образом без какого-либо дополнительного столбца

, но мне нужно имя этого столбца как owner_tenant_id в соответствии с нашим дизайном базы данных.

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

1 Ответ

1 голос
/ 18 апреля 2020

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

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

Это ключевой столбец и должен быть

<key column="owner_tenant_id" not-null="true"/>
...