延迟加载的问题

延迟加载的问题
     /**
     * 根据commutype,epId查询分期项目下拉列框的值(LabelValueEx对象)按indexNo升序排列,lable对应typeName,value对应commTypeId
     *  
@param   epId
     *             开发商Id
     * 
@param   commutype 
     *             通讯方法String类型,分别为tysms,tyemail,tyfax
     * 
@return  List
     * 
@throws  BusinessProcessException
     
*/
      如果在查询的SQL中,用到left join fetch 查询出来的只能是一个对象,而不能是某些列 
     否则会出现没有取到延迟加载的列的错误 

    
public  List getCrmCommuInfoTyFms(String epId,String commutype)  throws  BusinessProcessException {
        List dicList 
=   new  ArrayList();
        
if ( ! BlankUtil.isBlank(commutype))
        {        
        
try  {
            String query
= " select info.constValueId from SysConstValue info "
                
+ "  where info.constValue=' " + commutype + " ' " ;
            Long scv
= (Long)cDao.execute(query);
            String sql 
=   " from CrmCommInfoType info left join fetch info.communicationTy "
                
+   "  where info.epId=' " + epId + " ' "  
                
+ "  and info.communicationTy.constValueId= " + Long.parseLong(scv.toString());
            dicList 
=  cDao.queryObjects(sql);
         } 
catch  (Exception ex) {
            
throw   new  BusinessProcessException( " getDictData_search_001 " );
         }
        }
        
return  dicList;
    }

/**
     * 根据commutype,epId查询分期项目下拉列框的值(LabelValueEx对象),lable对应typeName,value对应commTypeId
     * 
     * 
@param  epId
     *            开发商Id
     * 
@param  commutype
     *            通讯方法String类型,分别为tysms,tyemail,tyfax
     * 
@return  List
     * 
@throws  BusinessProcessException
     
*/
    @SuppressWarnings(
" unchecked " )
    
public  DicSelectionModel getCrmCommuInfoTyFms(String epId, String commutype)
            
throws  BusinessProcessException {
        
try  {
            
if  (DictionaryServ  ==   null ) {
                System.out.println(
" DictionaryServ is null. " );
            }
            System.out.println(
" get dicList:------>begin " );
            List dicList 
=  DictionaryServ.getCrmCommuInfoTyFms(epId, commutype);
            System.out.println(
" get dicList:------>end " );
            List
< LabelValueEx >  labelValueList  =   new  ArrayList();
            Iterator it 
=  dicList.iterator();
            
//  System.out.println("*************** Iterator begin");
            labelValueList.add( new  LabelValueEx( " 请选择 " 0 ));
            
while  (it.hasNext()) {
                CrmCommInfoType result 
=  (CrmCommInfoType) it.next();
                String label 
=  result.getTypeName();                                      //根据对象取到响应的列的值
                
long  value  =  result.getCommTypeId();
                LabelValueEx labelValue 
=   new  LabelValueEx(label, value);
                labelValueList.add(labelValue);
            }
            DicSelectionModel dicSelectionModel 
=   new  DicSelectionModel(
                    labelValueList);
            
return  dicSelectionModel;
        } 
catch  (Exception ex) {
            
throw   new  BusinessProcessException( " getCrmCommuInfoTyFms() " );
        }
    }

 



如果没有用到延迟加载 可以返回 已知的列
    
    
/**
     * 根据epId查询分析项下拉列框的值(LabelValue对象),lable对应constNameChs,value对应constName
     *  
@param   epId
     *             开发商Id
     * 
@return  List
     * 
@throws  BusinessProcessException
     
*/
    
public  List getAnalyseItem(String epId)  throws  BusinessProcessException {
        String sql 
=   " select info.constNameChs,info.constName from SysConst info "
            
+   "  where info.epId=' " + epId + " ' "
            
+   "  and flag='2' " ;
        List dicList 
=   new  ArrayList();

        
try  {
            dicList 
=  cDao.queryObjects(sql);
        } 
catch  (Exception ex) {
            
throw   new  BusinessProcessException( " getAnalyseItem() " );
        }
        
return  dicList;
    }

你可能感兴趣的:(延迟加载的问题)