オブジェクトをデータベースに永続化するために、Hibernate 4 (Spring 付き) を使用しています。コレクションの子を持つ親を保存しようとすると、問題が発生します。
私のテーブル:
| A | => PK (Composite) [String + Integer]
| B | => PK (Composite) [Stirng + Integer] + Integer
当然、B の PK は A の同じ PK と合成され、A には B のコレクションが含まれます。
私のコードでは、次のことが必要です。
A parent = new A();
parent.addCollection(new B());
parentDao.create(parent)
Hibernate がオブジェクトを永続化すると、文字列を A PK に設定し、Inter の最大 + 1 を計算できます。B PK の場合と同様に、Hibernate は A から同じ PK 値を設定し (親 => 子)、2 番目のインテンジャーの最大 + 1 を計算します。
それが可能だ?前もって感謝します
編集
私のクラス:
Class A {
static Class A_PK {
private String codAzienda;
private Integer year;
... Get, Set, HashCode, Equals and toString() ...
}
private A_PK id;
... another columns ...
@OneToMany(cascade=ALL)
@JoinColumns({
@JoinColumn(name="cod_azienda"),
@JoinColumn(name="year")
})
List<B> children;
}
Class B {
static Class B_PK {
private String codAzienda;
private Integer year;
private Integer nextId;
... Get, Set, HashCode, Equals and toString() ...
}
@EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "codAzienda", column = @Column(name = "cod_azienda")),
@AttributeOverride(name = "codCliente", column = @Column(name = "cod_cliente"))
})
private B_PK id;
... another columns ...
}