Я ищу способ сохранить, где база данных генерирует Id (@GeneratedValue
) и это значение будет каскадно добавлено к дочернему объекту, который является частью составного ключа. Допустим, у нас есть следующее Parent
:
@Entity
@Table("PARENT")
public class Parent {
private long id;
private List<Child> children;
@Id
@GeneratedValue
@Column(name="...")
public long getId() {
return this.id
}
public void setId(long id) {
this.id = id;
}
@OneToMany(mappedBy="key.parent", cascade= { CascadeType.ALL })
public List<Child> getChildren() {
return this.children;
}
}
с ребенком:
@Entity
@Table("CHILD")
public class Child {
private CompositeKey key;
private String value;
@EmbeddedId
public CompositeKey getKey() {
return this.key
}
public void setKey(CompositeKey key) {
this.key = key;
}
// .. basic mapping of value column
}
и составной ключ:
@Embeddable
public class CompositeKey key {
private String type;
private Parent parent;
@Column(name="TYPE")
public String getType() {
return this.type;
}
public void setType(String type) {
this.type = type;
}
@ManyToOne
@JoinColumn("PARENT_ID") // FK in the Child table
public Parent getParent() {
return this.parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
}
Кто-нибудь знает, как это может работать, где идентификатор для Parent
может быть сохранен и установлен как часть FK в Child
как часть CompositeKey