我有两个实体Person
和Address
。并且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" />
我想要第3个表(例如在@OneToMany
映射中生成休眠状态)。
如何使用liquibase-springboot
执行此操作?
答案 0 :(得分:2)
如果该关系确实是一个OnToMany,则不需要第三张表。只需添加PrimaryKeyJoinColumn。
如果地址可以被很多人重复使用,那就是ManyToMany关系。
您可以使用@ManytoMany并在@jointable中添加有关您已加入表的信息
答案 1 :(得分:0)
好吧,在使用liquibase的情况下,我们必须手动创建第3个表并必须应用必要的约束。
创建用于管理映射的表:
<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)确保Person
的{{1}}在映射表中是唯一的
2)id
的ID和ADDRESS
的{{1}}之间的外键关系
3)PERSON_ADDRESS
的ID和PERSON_ID
的{{1}}之间的外键关系
PERSON
PERSON_ADDRESS
ADDRESS_ID