zoukankan      html  css  js  c++  java
  • hibernate 设置懒加载自动为字段添加属性

    hibernate错误:org.apache.struts2.json.JSONWriter can not access a member of class
    org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
    with modifiers "public"

    解释是当action执行完,return success返回xml文件后,前提是你设置了懒加载之后,hibernate自动为你懒加载的实体增加两个属性,(hibernateLazyInitializer,handler)这样如果你在xml文件中不过滤这两个属性就会报以上的错误,

    主要原因:返回一个有懒加载对象的时候出现了错误,网上查了下可以在pojo中生成一个构造函数,不包括我们的懒加载对象,因为懒加载这个对象属性只是一个代理对象,如果json直接当作一个存在的属性去序列化就会出现错误

    贴上action代码

    package com.shinowit.actions;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.shinowit.dao.BaseDAO;
    import com.shinowit.entity.TMeMerchandiseInfo;
    import com.shinowit.tools.Cherset;
    import com.shinowit.tools.CommonQuery;
    
    import javax.annotation.Resource;
    import java.util.List;
    
    /**
     * Created by Administrator on 2014/11/13.
     */
    public class TMeMerchandiseInfoAction extends ActionSupport{
    
        @Resource
        private BaseDAO<TMeMerchandiseInfo> dao;
    
        private List<TMeMerchandiseInfo> tmmiList;
    
        private TMeMerchandiseInfo TMMI;
    
        private String code;
    
        private String codeName;
    
        private String msg;
    
        private int page;
    
        private int limit;
    
        private int rowCount;
    
        public String query(){
            CommonQuery cq = new CommonQuery();
            Cherset c =new Cherset();
            code=c.charSet(code);
            codeName=c.charSet(codeName);
            String hql = cq.haveCodeHql("TMeMerchandiseInfo",code,codeName);
            String hqlCount = cq.haveCodeHqlCount("TMeMerchandiseInfo",code,codeName);
            tmmiList=dao.queryForPage(hql,page,limit);
            rowCount=dao.queryRecordCount(hqlCount);
            return SUCCESS;
        }
    
    }

    xml代码:

            <action name="tMeMerchandiseInfoQuery"         class="com.shinowit.actions.TMeMerchandiseInfoAction" method="query">
                <result type="json" >
                    <param name="excludeProperties">
                        tmmiList.*hibernateLazyInitializer,tmmiList.*handler
                    </param>
                </result>
            </action>

    过滤掉这两个属性就可以了。

  • 相关阅读:
    Math类的用法
    c#中和java中可变参数对比
    c#中泛型集合directory和java中map集合对比
    C#调用短信接口(通过简单的工厂模式整合多个短信平台)
    C#用网易邮箱发送邮件(同步异步)
    新浪云-PHP实现上传原图,缩略图
    PHP 继承,组合,单模式,GUID,等混合实例
    ASP.Net MVC @Html类
    ASP.net MVC 无法初始化 ASP.NET Simple Membership 数据库
    PHP 单列模式实例讲解以及参考网址
  • 原文地址:https://www.cnblogs.com/chfg/p/4117306.html
Copyright © 2011-2022 走看看