об этом уже говорилось в https://github.com/hashicorp/consul/issues/4977 , причем целевая функция была включена в выпуск 1.4.4 (дата появления)
Вы должны сами управлять отношениями Java. Для такого рода вещей вам нужно что-то вроде:
@Entity
public class Contact {
@Id
private Long id;
@OneToMany(cascade = CascadeType.PERSIST, mappedBy = "contact")
private List<Phone> phoneNumbers;
public void addPhone(PhoneNumber phone) {
if (phone != null) {
if (phoneNumbers == null) {
phoneNumbers = new ArrayList<Phone>();
}
phoneNumbers.add(phone);
phone.setContact(this);
}
}
...
}
@Entity
public class Phone {
@Id
private Long id;
@ManyToOne
private Contact contact;
...
}
В ответ на ответ Клетуса. Я бы сказал, что важно иметь аннотацию @column
в полях идентификаторов, а также все элементы последовательности. Альтернативой использованию параметра mappedBy в аннотации @OneToMany
является использование аннотации @JoinColumn
.
Как своего рода в стороне ваша реализация addPhone нуждается в рассмотрении. Вероятно, это должно быть что-то вроде.
public void addPhone(PhoneNumber phone) {
if (phone == null) {
return;
} else {
if (phoneNumbers == null) {
phoneNumbers = new ArrayList<Phone>();
}
phoneNumbers.add(phone);
phone.setContact(this);
}
}