При добавлении нового внука в дочерний элемент родителя добавляемый объект заменяется новым объектом в коллекции.Те же значения свойств, и они сохраняются в порядке, но исходный объект, который I new'd
не содержит идентификатора и был удален из коллекции.Даже после того, как я добавил Дитя, установив this
и затем добавив внука в коллекцию.
Мне нужен объект, чтобы получить идентификатор, чтобы я мог отобразить и вернуть его вызывающей стороне.
@Entity
@Table(name = "parents")
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@NotNull
private long id;
@NotNull
private String name;
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<ChildA> childrenA;
}
@Entity
@Table(name = "children_a")
public class ChildA {
@NotNull
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Id
private long id;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "parent_id", nullable = false)
private Parent parent;
@OneToMany(mappedBy = "childA", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<ChildB> childrenB;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
public void addChildB(ChildB childb) {
childb.setChildA(this);
childrenB.add(childB);
}
public Set<ChildB> getChildrenB() {
return childrenB;
}
public void setChildrenB(Set<ChildB> childrenB) {
this.childrenB = childrenB;
}
}
@Entity
@Table(name = "children_b")
public class ChildB implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "child_a_id")
private ChildA chiuldA;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public ChildA getChildA() {
return childA;
}
public void setChildA(ChildA childA) {
this.childA = childA;
}
}