Java Hibernate从另一个会话获取集合
大家好,我一直收到臭名昭著的“no session or session was closed”(无会话或会话已关闭)我知道这是因为我试图在另一个会话中invke hibernate持久化对象的集合,所以有没有一种方法可以真正做到这一点,而无需创建筛选器并将JOIN fetch模式添加到其中 GRAVE:未能延迟初始化角色集合:ni.edu.uni.id.data.object.Curso.modulos,未关闭任何会话或会话Java Hibernate从另一个会话获取集合,java,hibernate,hibernate3,Java,Hibernate,Hibernate3,大家好,我一直收到臭名昭著的“no session or session was closed”(无会话或会话已关闭)我知道这是因为我试图在另一个会话中invke hibernate持久化对象的集合,所以有没有一种方法可以真正做到这一点,而无需创建筛选器并将JOIN fetch模式添加到其中 GRAVE:未能延迟初始化角色集合:ni.edu.uni.id.data.object.Curso.modulos,未关闭任何会话或会话 org.hibernate.LazyInitializationEx
org.hibernate.LazyInitializationException:未能延迟初始化角色集合:ni.edu.uni.id.data.object.Curso.modulos,没有会话或会话已关闭session.merge可能会有所帮助,具体取决于您的具体情况最好刷新持久对象。例如,调用DAO
getById()
传递对象的id,然后使用必要的集合。这是因为原始会话已关闭。在将项目存储到内存中之前,以及在关闭Hibernate会话之前,您需要访问稍后将使用的任何链接集合,以便将其加载到内存中。另一种方法是设置集合,使其立即加载,但这可能会影响性能
手动预加载集合甚至可以通过访问.Count
属性(C#,但同样适用于Java)轻松完成。例如:
Brand b = BrandRepository.GetById(1234);
int tmp = b.Products.Count; //this is only to load the products collection. This can then be used in a later session.
认真地恐怕有人说:|