2
我有one-to-many
父对象和子对象之间的关系。父对象使用存储多个子对象的java.util.List
。我遇到的问题是在向父节点中的List
添加一个或多个子对象后更新父对象。我正在使用saveOrUpdate
方法来保存或更新父级。如果我正在保存父对象的新实例,但它工作正常,但在保存后,我尝试将子对象添加到父对象List
中,然后尝试对父对象调用saveOrUpdate
,但没有任何子对象条目( s)被持久化到数据库中。我只想要一些指针。 注意:我没有使用注释。
的Parent.hbm.xml的一个片段,它定义了一个一对多的单向关系:休眠一对多单向映射表
<list name="children" cascade="all">
<key column="parent_id"/>
<index column="idx"/>
<one-to-many class="Child"/>
</list>
谢谢罗马。我按照你的建议尝试过。但是,我得到一个异常:“org.hibernate.LazyInitializationException:未能懒惰地初始化一个角色集合:Parent.children,没有会议或会话已关闭”。从数据库加载父级后,JUnit测试在parent.getChildren上失败。 – walters 2010-10-14 09:03:23
是的,这发生在分离的实体上。根据需求(例如是否必须始终加载子进程),可以热切加载它们(要执行此操作,可以在列表中设置lazy =“false”)。您可以在Hibernate网站上阅读更多内容:http://docs.jboss.org/hibernate/core/3.5/reference/en/html/performance.html#performance-fetching-lazy。另外,请考虑“在视图中打开会话”模式。 – Roman 2010-10-14 09:50:28
另外,这个SO线程有关于这个问题的更多信息:http://stackoverflow.com/questions/345705/hibernate-lazyinitializationexception-could-not-initialize-proxy – Roman 2010-10-14 10:03:57