Hibernate XML映射-当外键列名称与映射表的列名称不同时,它将在数据库中同时生成该列

时间:2020-04-18 07:59:34

标签: hibernate hibernate-mapping hibernate-xml-mapping

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>

我正在尝试使用休眠xml映射生成2个表,其中外键列名与关联表列名不同,关联表列名是关联表中的主键,我已经在下面说明了这种情况。

我正在尝试使用上述的Hibernate xml映射生成 pim_tenant pim_workgroup 表。

如果您看到 owner_tenant_id 是引用 pim_tenant的tenant_id 列的外键,则外键列名与主表的区别(pim_workgroup-> tenant_id)

pim_workgroup 表中创建表时,它会正确生成 owner_tenant_id 列作为外键,但表还具有其他新列 tenant_id ,请不要不知道为什么会在 pim_workgroup

中生成此添加 tenant_id

如果我将列 owner_tenant_id 更改为 tenant_id ,那么它正确生成了tenant_id作为外键,而没有任何其他列

但是根据我们的数据库设计,我需要此列名称为 owner_tenant_id

请有人帮我,我尝试了很多方法,但是没有任何效果。

1 个答案:

答案 0 :(得分:1)

那是因为这一行:

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

这是前键列,必须位于

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