В этой теме есть несколько разных вопросов, ответы на которые есть, но из того, что я вижу, многие ответы устарели или не имеют для меня никакого смысла.
Допустим, у меня есть Entity
/ Table
:
@Entity
@Table(name = "ParentTable")
public class Parent {
@Id
@GeneratedValue
private Integer id;
@OneToMany(cascade = CascadeType.ALL)
@NotNull
private List<Child> children;
public Parent(String childLabel){
this.children = new ArrayList<>();
this.children.add(new Child(childLabel));
}
// Get/Set/Constructors
}
Затем Child
как:
@Entity
public class Child {
@Id
@GeneratedValue
private Integer id;
@NotNull
private String label;
public Child(String label){
this.label = label;
}
// Get/Set/Constructors
}
И затем я создаю некоторых родителей следующим образом:
String childLabel = "child-label";
Parent a = new Parent(childLabel);
Parent b = new Parent(childLabel);
// Save both parents to a db
Создается два экземпляраребенка в таблице с разными идентификаторами.Я понимаю, что это потому, что различные экземпляры Child
создаются, а затем сохраняются отдельно.
Но как мне изменить мой дизайн, чтобы сохранить и сослаться только на один экземпляр двух идентичных потомков?Я попытался построить ребенка, а затем отдать его родителям, но затем я получил ошибку первичного ключа.