我使用Hibernate 4(與Spring)將我的對象保存到數據庫中。 我有一些問題,當我嘗試保存收集兒童的父母。休眠保存集合
我的表:
| A | => PK (Composite) [String + Integer]
| B | => PK (Composite) [Stirng + Integer] + Integer
天然化B的PK是複合材料A的相同pk和含有B.
集合在我的代碼我想:
A parent = new A();
parent.addCollection(new B());
parentDao.create(parent)
當Hibernate支持對象時,它可以將一個String設置爲PK,並計算Inter的最大值+1。 對於B PK,同樣的方法,Hibernate從A(parent => child)設置相同的PK值並計算第二個Intenger的max + 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 ...
}
是的,它是可能的,但你嘗試過這麼遠嗎? – overmeulen 2013-03-20 14:52:10
我試過使用自定義的saveOrUpdate事件監聽器,從我的DAO中使用攔截器和AOP。 – stefanopulze 2013-03-20 18:29:10