2011-11-04 106 views
3

层次结构如下:父对象与一个子对象相关联。 我创建了一个新的Parent对象,并希望将它与一个已存储在数据库中的Child对象相关联,并将Parent保存到数据库。一种方法是预先加载孩子并将其与父母关联。 但是,我可以创建一个新的Child对象,设置它的id,并将它与Parent关联,所以当我保存Parent时,hibernate会自动找到合适的Child并填写缺少的Child字段,它们最初设置为null?休眠保存关联

谢谢。

回答

5

不可以。您必须从数据库中获取子项。但是,如果您使用session.load而不是session.get,它只会将代理初始化为实际的持久对象,甚至不执行SQL查询。当然,如果实体确实不存在于数据库中,那么在刷新时(或者如果实体稍后在事务中由代码的其他部分获取),您将有一个异常。

Child child = session.load(Child.class, idOfChild); // no SQL query here 
Parent p = new Parent(); 
p.setChild(child); 
session.persist(p);