代码之家  ›  专栏  ›  技术社区  ›  Mehraj Malik

带有liquibase@OneToMany映射的弹簧靴

  •  0
  • Mehraj Malik  · 技术社区  · 8 年前

    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" />
    

    我想要第三张桌子(像hibernate generate @OneToMany 映射)。

    如何使用 liquibase-springboot ?

    2 回复  |  直到 8 年前
        1
  •  2
  •   Eric    8 年前

    如果关系真的是一个本体多,你不需要第三个表。只需添加PrimaryKeyJoinColumn。

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

    您可以使用@manytomy并添加有关您已联接表un@jointable的信息

        2
  •  0
  •   Mehraj Malik    8 年前

    好吧,在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>
    

    应用约束:

    Person s id 在映射表中是唯一的

    ADDRESS 的id和 PERSON_ADDRESS 的 PERSON_ID

    PERSON 的id和 个人地址 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" />