【发布时间】:2018-09-26 15:01:02
【问题描述】:
我正在使用 Liquibase 处理 Spring Data JPA,我有两个类,第一个使用简单键,第二个使用复合键,(多对多关系)
头等舱:
public class Person {
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "person_adress", joinColumns = { @JoinColumn(name = "person_id") }, inverseJoinColumns = {
@JoinColumn(name = "adress_id"), @JoinColumn(name = "country") })
private List<Adress> adresses;
// Other attributes
}
二等:
public class Adress {
@EmbeddedId
private AdressId adressId; // contains adress_id and country as composite key
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "adresses")
private List<Person> persons;
// Other attributes
}
Liquibase 文件:
<changeSet id="......." author="........">
<createTable tableName="person_adress">
<column name="person_id" type="varchar(255)">
<constraints nullable="false" />
</column>
<column name="adress_id" type="varchar(255)">
<constraints nullable="false" />
</column>
<column name="country" type="varchar(2)">
<constraints nullable="false" />
</column>
</createTable>
<addUniqueConstraint
columnNames="country, adress_id,person_id"
constraintName="keey"
tableName="person_adress" />
</changeSet>
当我调用此服务时:
adress.add(ListOfPersons);
adressRepository.save(adress);
在 postgresql 中,地址和人员列表也被持久化了,但是 person_adress 表仍然为空的问题
【问题讨论】:
标签: spring spring-boot spring-data-jpa liquibase