2011-05-03 68 views
0

我只想知道传递关系(我不知道它是否可以这样调用)可以使用注释在hibernate中持久化。 即,我有3 pojo类,即A,B和C. 我只是将C的实例映射到B和B的实例到A. 当我保存A(session.save(A)),我可以得到B和C持久?休眠中的传递关系

例如:

a = new A(); 

b = new B(); 

c = new C(); 

b.setC(c); 

a.setB(b) 

then, 

session.save(a); 

如果上述行执行,我只是想知道B和C是否会得到持续?

我认为你们所有人都明白我的意思。 否则,我可以更详细说明我的问题.. 请帮我.. 在此先感谢。

+0

这样沿着操作被称为级联操作 – 2011-05-03 04:01:54

+0

感谢您宝贵的意见....但我只想知道是否b d c会自动保存下来吗?我认为级联可以在一个级别上流动,即从a到b或b到c ...对吧?在这里,我想坚持a,b和c ....是否有可能在休眠? – Deepesh 2011-05-12 00:48:16

+0

你将不得不在两个级别添加级联 – 2011-05-12 05:04:11

回答

0

您可以定义什么对象与您的当前对象一起保存。在你的情况下

对于A保存A时,保存B对象和它一起。

public class A { 
    @ManyToOne(cascade={CascadeType.PERSIST}) 
    B b; 
} 

对于乙当B被保存的,自动保存C对象与它

public class B { 
    @ManyToOne(cascade={CascadeType.PERSIST}) 
    private C c; 
} 

对于C(没有到与它一起保存)

public class C { 

} 
+0

好吧,我同意了。但是,如果一个A的对象(比如'a')将被持久化,那么b和c会自动持续吗? – Deepesh 2011-07-20 09:57:53

+0

是的,它会的。这就是CascadeType.PERSIST的全部目的 – zawhtut 2011-07-20 15:03:22