0

我有两个实体PersonAddress. 并且 Person可以有多个Address.

<createTable tableName="ADDRESS">
            <column name="id" type="bigint(20)" autoIncrement="true">
                <constraints primaryKey="true" nullable="false" />
               ... //columns
            </column>
</createTable>

<createTable tableName="PERSON">
            <column name="id" type="bigint(20)" autoIncrement="true">
                <constraints primaryKey="true" nullable="false" />
               ... //columns
            </column>
</createTable>

    <addForeignKeyConstraint
        constraintName="fk_constraint_worker_phone_number"
        referencedTableName="CONTACT_NUMBER" baseColumnNames="ContactNumbers"
        baseTableName="WORKER" referencedColumnNames="id" />

我想要第三张表(比如@OneToMany映射中的休眠生成)。

如何做到这一点liquibase-springboot

4

2 回答 2

2

如果关系确实是 OnToMany,则不需要第三张表。只需添加 PrimaryKeyJoinColumn。

如果地址可以被许多人重用,那么它就是一个多对多关系。

您可以使用 @ManytoMany 并添加有关您加入的表 un @jointable 的信息

于 2018-09-11T09:44:09.500 回答
0

好吧,在 liquibase 的情况下,我们必须手动创建第三张表,并且必须应用必要的约束。

创建管理映射的表


<createTable tableName="PERSON_ADDRESS">
    <column name="PERSON_ID" type="BIGINT">
        <constraints primaryKey="true" nullable="false" />
    </column>
    <column name="ADDRESS_ID" type="BIGINT">
        <constraints primaryKey="true" nullable="false" />
    </column>
</createTable>

应用约束:

1)确保Personsid在映射表中是唯一的

ADDRESS2) 's 的 id 和PERSON_ADDRESS's之间的外键关系PERSON_ID

PERSON3) 's id 和PERSON_ADDRESS's之间的外键关系ADDRESS_ID


<addUniqueConstraint
            columnNames="PERSON_ID" tableName="PERSON_ADDRESS"
            constraintName="UK_PHONE_NUMBERS_ID" />

<addForeignKeyConstraint
            constraintName="FK_ADDRESS_PERSON_ADDRESS"
            referencedTableName="ADDRESS"
            baseColumnNames="ADDRESS_ID"
            baseTableName="PERSON_ADDRESS" referencedColumnNames="id" />

<addForeignKeyConstraint
            constraintName="FK_PERSON_PERSON_ADDRESS"
            referencedTableName="PERSON"
            baseColumnNames="PERSON_ID"
            baseTableName="PERSON_ADDRESS" referencedColumnNames="id" />
于 2018-09-12T09:49:04.997 回答