开发者社区> 问答> 正文

springmvc 使用jackson转换 hibernate lazyload?报错

首先描述一下问题:

我在spring mvc中配置jackson转换 controller中的对象的时候,如果是 hibernate 懒加载的对象就会出现  session已经关闭的错误,因为事物是在service层,查了一些解决办法如下:

1.在web.xml中加入OpenSessionInViewFilter  ,这样的话session其实是未关闭的,前台页面如果调用get方法还是会去请求数据库    果断不能这样做啊

2.在实体bean的set属性上添加jsonignore ,这样虽然不会报错,但是在任何请查询结果中前台只能得到主对象了 ,这样还是不行      果断不能这样做

3.  放弃lazy load   更不能这样做了

网上提出这个问题 的人很多但是我觉得以上解决办法都不好或者是不能满足需求

求大牛帮忙解决。。。。。

展开
收起
爱吃鱼的程序员 2020-06-14 18:25:45 823 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    <spanstyle="color:#333333;font-family:arial;font-size:13px;line-height:20px;background-color:#FFFFFF;">@JsonIgnoreProperties("<spanstyle="color:#CC0000;font-family:arial;font-size:13px;line-height:20px;background-color:#FFFFFF;">hibernateLazyInitializer<spanstyle="color:#333333;font-family:arial;font-size:13px;line-height:20px;background-color:#FFFFFF;">") 回复<aclass='referer'target='_blank'>@成俊达:报什么错,怎么个不行法?回复<aclass='referer'target='_blank'>@成俊达:http://hypgr.iteye.com/blog/907549试试加上这个还是不行......对于数据不就这三种方法么,要么不要对象,要么初始化的时候一起加载,要么需要的时候再加载...你还能想出来第四种可能么...如果非要这种效果,并且访问量不大的话就是使用opensessioninview,或者干脆不要懒加载。官方推荐用连接查询leftjoinfetch或者rightjoinfetch根据需求而定回复<aclass='referer'target='_blank'>@成俊达:恭喜恭喜问题已经解决Jackson和HIbernatelazyloading的问题,可以参考这个jackson官方项目<atarget="_blank"rel="nofollow">https://github.com/FasterXML/jackson-datatype-hibernate

    2020-06-14 18:26:01
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载