page = dao.find("from TUser",1,100);
if(page!=null){
 return  SUCCESS;
}else{
return INPUT;
}
  <action name="findAllUser" class="userAction" method="findAll">
   <result type="json">
   <param name="root">page</param>
   </result>
   </action>如果没有经过STRUTS的解析JSON,就只会产生一条SQL语句
如果经过解析JSON,就会产生N多条SQL语句TUser这个对象关联了很多对象
        <set name="TUsergroupusers" inverse="true" lazy="true">
            <key>
                <column name="USID" precision="22" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.xaec.model.TUsergroupuser" />
        </set>
        <set name="TUserroles" inverse="true" lazy="true">
            <key>
                <column name="USID" precision="22" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.xaec.model.TUserrole" />
        </set>
        <set name="TUserfieldpers" inverse="true" lazy="true">
            <key>
                <column name="USID" precision="22" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.xaec.model.TUserfieldper" />
        </set>
        <set name="TUserfuns" inverse="true" lazy="true">
            <key>
                <column name="USID" precision="22" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.xaec.model.TUserfun" />
        </set>

解决方案 »

  1.   

    那是因为你的映射文件,设置属性时,关联了其他类,这也是hibernate的一大弱点
      

  2.   

    我也知道是我的类关联了其他类引起的,但为什么我单独查不会多SQL语句,STRUTS2解析JSON就会多这么多SQL语句,能不能讲深点
      

  3.   


    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
            "http://struts.apache.org/dtds/struts-2.1.dtd"><struts>
    <package name="system/qzgl" extends="json-default" namespace="/system/qzgl">
    <action name="*qzxxAction" class="qzxxAction" method="{1}">
    <result type="json">
    <param name="excludeProperties">
    <!-- 不会被序列化的Action属性 -->
    qzxxList.*.qzries
    </param>
    </result>
    </action>
    <action name="*qzryAction" class="qzryAction" method="{1}">
    <result type="json">
    <param name="excludeProperties">
    <!-- 不会被序列化的Action属性 -->
    qzryList.*.sysUsers.jsries,qzryList.*.sysUsers.qzries,qzryList.*.sysUsers.dwxx.sysUserses
    </param>
    </result>
    </action>
    </package>
    </struts>
    在struts配置文件中做处理,不知楼主能理解否?过滤到不需要序列化的属性,就不会出现多余的sql
      

  4.   

    謝謝樓上的,我明白你的意思,我已經決定不用STRUTS2自帶的插件了,效率比較低,打算用LITE
      

  5.   

    這是我的STRUTS2的struts.xml文件的內容<param name="excludeProperties">TUsergroupusers,TUserroles,TUserfieldpers,TUserfuns,loginPassword</param>
    這是我的TUser的內容
            private Set TUsergroupusers = new HashSet(0); private String loginPassword; private Set TUserroles = new HashSet(0); private Set TUserfieldpers = new HashSet(0); private Set TUserfuns = new HashSet(0);
    怎麼攔截不生效?