我有如下幾個持久層類
a:a.x為主鍵
b:b.y為一個a
c:c.z為一個b
現在我要修改一個c,在實例化該對象時會將c.z取出來,但是c.z.y(也就是a類對象)我不想取出來
問題出來了:實例化c.z.y會失敗,因為session已經關閉
我需要的是,如何取消實例化c.z.y
或者實例化c.z.y不會產生那個錯誤
Lazy=ture
不明白为什么实例化会失败
是你去实例化?还是hibernate?
如果是你去实例化那问题就无解了
如果是hibernate的话,hibernate默认就是Lazy=ture的,你肯定有有地方搞错了
实例化不产生错误的话 你试试Lazy=false
你的问题描述存在严重问题
第一:配置文件保持原来的生成的那样不要去更改其他地方
第二:将你的程序里边有用到 Set()方法取集合的时候 改为在写多一个 Sql用编号或者是唯一的字段 语句在查一次
第三:调试一下,看是不是有其他的地方和你这里有联系。然后Session 被你关闭了。
谢谢!你先试一试,我们的程序基本都是这样解决的。
用lazy=false或者写hql语句时加上fetch