我正在寻找一种方法来保存数据库生成Id(@GeneratedValue
)的位置,并将该值级联到作为Composite Key一部分的子对象。假设我们有以下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
的ID可以作为Child
CompositeKey
中FK的一部分