Hibernate保存以便第二次获取序列

时间:2009-08-21 20:24:45

标签: java hibernate

我有一个这样的类(有getter和setter,都映射到hibernate,每个都有一个到oracle DB的序列)

 public class A{
       private B b;
       private C c;
 }

我正在创建此对象并将其保存到数据库中。

所以我创建一个A对象并用B对象填充它并调用

saveOrUpdate(a)

所以我可以生成“a”和“b”序列。然后我做一些计算并创建一个“C”的实例并将其设置为“a”

到目前为止,一切都很好。我现在需要得到“c”的id,所以我在刷新和提交之前做了一些检查。

但是saveOrUpdate在这里不起作用,因为该对象不再是瞬态的。根据saveOrUpdate上的hibernate文档:“如果对象在此会话中已经持久化,则不执行任何操作”

有什么想法吗?

(不能发布代码,因为它太长而且很乱,但基本上就是这样)

1 个答案:

答案 0 :(得分:0)

如果C是一个hibernate映射类并且该属性被正确映射,那么hibernate将检测到属性C已经改变,将在会话刷新或活动事务将提交时为您保存。然后可以在提交后获得C的id。

另一种方法是调用saveOrUpdate(c)。在这种情况下,c会分配一个id,因此您可以检索它。

你在做什么检查,你需要c的id?