我使用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