Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate从另一个会话获取集合_Java_Hibernate_Hibernate3 - Fatal编程技术网

Java Hibernate从另一个会话获取集合

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

大家好,我一直收到臭名昭著的“no session or session was closed”(无会话或会话已关闭)我知道这是因为我试图在另一个会话中invke hibernate持久化对象的集合,所以有没有一种方法可以真正做到这一点,而无需创建筛选器并将JOIN fetch模式添加到其中

GRAVE:未能延迟初始化角色集合:ni.edu.uni.id.data.object.Curso.modulos,未关闭任何会话或会话
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.

认真地恐怕有人说:|