楼上的做法完全是个错误
我不知道是你们设计问题还是别的什么问题使用EJB最忌讳两个容器都使用,这样会大大降低效率。既然你用到了CMP,那就一直使用这个。
牵涉到复杂的查询。建议你们要在上层做个类似sessionBean来出来这个事情。三年前我们正规的调用是这么的过程:
delegate-->facade(这里的设计一定要做好,把模块业务封装在一起)-->sessionBean(EntityBean)-->DB
关键的问题还是在你的sessionBean中的运用,所以当时我们采用了VO来做数据封装和上层,底层来打交道

解决方案 »

  1.   

    如果太复杂的查询还是用jdbc来提取,然后用VO来封装
      

  2.   

    恩 好的
     我会一直用CMP的但是他 
    怎么批量检索数据呢
    然后显示
    麻烦赐教
      

  3.   

    你就是想把list给带出来吗?
    如果是的话,这个不是什么很难的事情
    想合并集合也是一样。
    我只是凭影象说下:
    通过PK来得到类,这个甚至可以得到Collection
    得到后,你要通过:
    List listNew=new ArrayList();
    for(Iterator it=list.Iterator();it.hasNext();){
    ClassVO vo=new ClassVO();
    vo.setXXX(...)
    listNew.add(vo);
    }
    return new listNew;
    以上就是一个简单的实现,至于上面的list就是你传过来的集合对象,这个list可以通过jdbc来得到:ResultSet.
    上面的方法如果写的好,还可以分拆成下面的:public Collection getBigVO(){
           List listBig=new ArrayList();
           while(rs.next()){
                listBig.add(getColls(rs));
           }
          return listBig;
    }private ClassVO getColls(ResultSet rs) throws ...{
            ClassVO vo=new ClassVO();
            vo.setXXX(rs.getString(1));
            ....
    }
    注:以上的ClassVO 就是你自己的VO
    既然得到了这个list,我想其他问题应该不难吧!
      

  4.   

    上面有个循环步骤漏了点,你自己补下就可以:
    for(Iterator it=list.Iterator();it.hasNext();){
    ClassVO vo=new ClassVO();
    vo.setXXX(...)
    listNew.add(vo);
    }
    ==》
    for(Iterator it=list.Iterator();it.hasNext();){
    ClassVO vo=(ClassVO)it.next();
    vo.setXXX(...)
    listNew.add(vo);
    }
      

  5.   


     太感谢Top  
     yeshucheng了
    问题搞定  我在这里老是出现类型转换问题 是JB+weblogic的 麻烦再给看看
      Context ctx=new InitialContext();
             //Context ctx=getlnitialContext();
           
             UserHome home=(UserHome)ctx.lookup("User");
             home.create(UserName,UserPwd,PenName,UserSex,UserInfo,UserEmail);
    java.lang.ClassCastException
            at newsoperation.UserInfoBean.addUser(UserInfoBean.java:32)
            at newsoperation.UserInfoBean_1es1gu_EOImpl.addUser(UserInfoBean_1es1gu_
    EOImpl.java:46)
            at newsoperation.UserInfoBean_1es1gu_EOImpl_WLSkel.invoke(Unknown Source
    )
            at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:466)
            at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
    ef.java:108)
            at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:409)
            at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
    dSubject.java:353)
            at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
    144)
            at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
    a:404)
            at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
    .java:30)
            at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
            at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
      

  6.   

    23943948 群号欢迎
    2年以上J2ee java工作经验以上的