Я работаю с Spring Data JPA, используя Liquibase, у меня есть два класса, первый с простым ключом, а второй с составным ключом (отношения многие ко многим)
Первый класс:
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 по-прежнему пуста