2
データベースがId(@GeneratedValue
)を生成する場所を保存する方法を探していて、その値を複合キーの一部である子オブジェクトにカスケードする必要があります。 Parent
次のは、我々が持っているとしましょう:JPA/Hibernate親に依存する複合キーを持つ子を保存します。
@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
}
複合キー:子どもと
@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;
}
}
が
@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ことができますFKの一部として保存され、CompositeKey
Child
に保存されます210
最後に私のデータベースを修正し、UUIDジェネレータを使って子オブジェクトのキーを設定しました。私は一番上の検索結果をいくつか試しましたが、最終的に私は前に進む必要があると決めました。 – rynmrtn