层次结构如下:父对象与子对象相关联。 我创建了一个新的 Parent 对象,并希望将其与已存储在数据库中的 Child 对象相关联,并将 Parent 保存到数据库中。一种方法是预加载 Child 并将其与 Parent 关联。 但是我是否可以创建一个新的 Child 对象,设置它的 id,并将它与 Parent 相关联,这样当我保存 Parent 时,hibernate 会自动找到合适的 Child 并填充缺少的 Child 字段,这些字段最初设置为 null?
谢谢。
最佳答案
没有。您必须从数据库中获取 child 。但是,如果您使用 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);
关于java - hibernate 保存关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8014885/