Я считаю, что вы пытаетесь сделать отношение один-ко-многим, а не многие-ко-многим, как видно из ваших аннотаций. Отношение «многие ко многим» - это когда вы используете третью таблицу для соединения двух, в которой просто есть id-пары для обеих таблиц.
@Entity
@Table(name = "table1")
@Data
public class Table1{
@OneToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
}, orphanRemoval = true)
private List<Table2> data = new ArrayList<>();
}
Вам необходимо сослаться на объект Table1 в Table2
@Entity
@Table(name = "table2")
@Data
public class Table2{
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "table1_id")
private Table1 owner;
private String name;
private String address;
}
Я добавил это orphanRemoval = true
, потому что без этого люди часто путаются, что они что-то удалили из списка, но это все равно будет в следующий раз, когда они получат данные. Это было то, что спецификации JPA пропустили до версии 2.1.