hibernate延迟加载异常,但不想使用lazy=false,请问有好的方法吗

allen_limi 发布于 2013/06/04 09:58
阅读 1K+
收藏 0

我的数据库是一对多关系,Users结构:

Integer id;

String name;

Set<Bill> bills;

(注:先不管users的数据量,只讨论延迟加载)

我在action中查出10个Users,将List<Users>转化为Json字符串,但是爆出failed to lazily initialize a collection

原因转换Json时,会访问users.bills,这个集合采用了延迟加载,访问时才去加载数据库,而此时session已经关闭了,给配置文件中<set name="bills" lazy="false">加上lazy=false即可,但这样当我查询10个Users对象,会把每个Users下的bill都查出来,非常浪费性能,因为我不需要这些数据

请问还有没有其他方法呢?我想要的是不使用lazy=false,并且在转换JSON时不爆出sessoin was closed




加载中
0
純白陰影
純白陰影
把bills设为JSON转换忽略
純白陰影
純白陰影
http://code.alibabatech.com/jira/browse/FASTJSON-163
allen_limi
allen_limi
请问怎么设置呢?我刚查看了fastjson的各种属性,没有碰到可以设置Set忽略的
0
刘玉刚
你可以在写一条SQL 单独抓取这些BILLS记录啊
0
兮风古道
兮风古道

引用来自“刘玉刚”的答案

你可以在写一条SQL 单独抓取这些BILLS记录啊
楼上正确
0
魔力猫
魔力猫
JSON转换不要脱离事务范围。
返回顶部
顶部