Action类方法: /**
 * 查询企业名称是否存在
 * @return
 */
public String selectOrgByOrgName(){
try {
bo=orgZcService.selectOrgByOrgName(orgZc.getOrgName());
} catch (Exception e) {
System.out.println(e.getMessage());
LOGGER.info("企业注册Action---查询企业名称是否存在失败");
return "EXCEPTION";
}
return "selectOrgByOrgName";
}
当执行到Action类方法的return "selectOrgByOrgName";时,后台只输出一SQL语句,但return这一句一执行,就会多出N条查询子表的SQL。所以速度很慢,这是1+N问题吗?
Action类调用的DaoImpl方法: /**
 * 查询机构名称是否存在
 * @param roleName
 * @return
 */
public Boolean chickRoleNmaeIsNull(String roleName){
Boolean bo=true;
try {
String hql="select r.roleName from Role r where r.roleName=? and r.zt=0";
List<Role> list=find(hql,roleName);
if(list.size()!=0){
bo=false;
}
} catch (Exception e) {
System.out.println(e.getMessage());
LOGGER.info("组织机构接口实现类---查询机构名称是否存在失败");
}
return bo;
}
Role实体类央射文件--这里只贴出one-to-many部分:        <bag name="userses" inverse="true" lazy="false">
         <key>
         <column name="roleId" not-null="true"></column>
         </key>
         <one-to-many class="com.soonsee.app.domain.Users"/>
        </bag>
        <bag name="roleRights" inverse="true" lazy="false">
         <key>
         <column name="role_id" not-null="true"></column>
         </key>
         <one-to-many class="com.soonsee.app.domain.RoleRight"/>
        </bag>userses实体类央射文件--这里只贴出many-to-one部分:        <many-to-one name="role" class="com.soonsee.app.domain.Role" fetch="join" lazy="false">
            <column name="roleId" not-null="true" />
        </many-to-one>roleRights实体类央射文件--这里只贴出many-to-one部分:        <many-to-one name="role" class="com.soonsee.app.domain.Role" fetch="join" lazy="false">
            <column name="role_id" not-null="true" />
        </many-to-one>
我在网上也看了很多,说在many-to-one设置fetch=FetchType.LAZY,这我这里没有这个属性值,只有join和select两个属性值。
求解决方案!!!!!!!!

解决方案 »

  1.   

    在多的一段设置
    inverse="true" lazy="true"
      

  2.   


    加了,还是不行。多的一方:
            <many-to-one name="role" class="com.soonsee.app.domain.Role" insert="true" fetch="join" lazy="false">
                <column name="roleId" not-null="true" />
            </many-to-one>        <many-to-one name="role" class="com.soonsee.app.domain.Role" insert="true" lazy="false">
                <column name="role_id" not-null="true" />
            </many-to-one>
      

  3.   


    多的一方, lazy没有true这个值
    只有false,no-proxy,proxy
      

  4.   


    设true会报错org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.soonsee.app.domain.Role.roleRights, no session or session was closed
      

  5.   


     <bag name="userses" fetch="subselect" inverse="false" lazy="true">
             <key>
             <column name="roleId" not-null="true"></column>
             </key>
             <one-to-many class="com.soonsee.app.domain.Users"/>
            </bag>
            <bag name="roleRights" fetch="subselect" inverse="false" lazy="true">
             <key>
             <column name="role_id" not-null="true"></column>
             </key>
             <one-to-many class="com.soonsee.app.domain.RoleRight"/>
            </bag>