failed to lazily initialize a collection of role: com.bean.User.activities, could not initialize pro

来源:互联网 发布:授权回调域名出错 编辑:程序博客网 时间:2024/05/18 13:23

今天在配置一个ssh项目的时候出现了如下问题:

我配置了一个多对多关系, user.calss 和activity.clacc, 现在我获取list<user>转换为json数据的时候出现了问题, 后台没有报错, 但是用浏览器查看前台ajax返回的json数据出错, 报错信息如下: 

<tr>        <td><strong>Messages</strong>:</td>        <td>            <ol>                        <li>failed to lazily initialize a collection of role: com.bean.User.activities, could not initialize proxy - no Session</li>                        <li>org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.bean.User.activities, could not initialize proxy - no Session</li>                        <li>org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.bean.User.activities, could not initialize proxy - no Session</li>                        <li>org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.bean.User.activities, could not initialize proxy - no Session</li>            </ol>        </td>    </tr>

看这消息就知道是取值时session已经关闭了, 可是web.xml中配置了openSessionInViewFilter了呀, 这就有点奇怪了, 不知道是怎么回事, 网上找了一下也没合适点的解决方案.

解决方案如下:

在注解上添加: 

fetch = FetchType.EAGER

@ManyToMany(mappedBy = "activities", targetEntity = User.class, fetch = FetchType.EAGER)private Set<User> users = new HashSet<User>();

这样让它在查询的时候不懒加载问题就解决了.

虽然这个问题是解决了, 但是还没找到真正导致这个出错的原因, 可以是哪里配置还有问题, 求高手留言指教呀.

0 0
原创粉丝点击