要用CMP的话,你可以数据库建立VIEW,然后生成CMP!
或者用BMP!我按我的理解哦!我也初学!

解决方案 »

  1.   

    最好在数据库方操作!!!
    1,预建view
    2,预建faction
    3,预建proceduer
    然后在cmp里调就行了
      

  2.   

    在这三个实体bean建立好关联的基础上,用实体WzRkd的findAll方法就已经得到你要的所有的数据了,然后再在sessionbean中组合这些数据即可。
      

  3.   

    建立view后再生成cmp,那么插入、删除数据时又怎么操作呢,因为删除时可能只删除一个表中的记录。
    还有cmp中的remove,它会删除什么记录呢?
      

  4.   

    WzRkd和WzRkdmx是一对多关系。WzRkdmx和WzWzdm是一对一关系to jew(木鱼)根据你的说法,比如我想得到上面提到的数据,采取这样的操作方法:
    ArrayList temp = new ArrayList();
    Collection collection = wzrkdHome.findAll();
    Iterator iterator = collection.Iterator();
    while(iterator.has){
      单位代码  = iterator.next().getWzRkdmx().getDwdm();//得到物资明细中的单位代码
      物资名称  = iterator.next().getWzRkdmx().getWzWzdm().getWzmc();//得到物资编码中的物资名称
      .....  
    }
    问上面的操作是否正确?再问:将得到的数据如何组合,我看到的是存放在一个数据列表中,如果我有多列数据,又该如何存放?
      

  5.   

    jbuilder中生成cmp的时候写sql可以选择多表多字段
      

  6.   

    to wdman(天空)如果可以的话,那这与数据库中生成view有什么区别呢
    cmp中的remove又是删除那个表的记录呢
      

  7.   

    如果只是想显示这些数据,建议从session bean->dao->database,实体bean不太合适做这种工作。
      

  8.   


    ArrayList list = new ArrayList();
    Collection collection = wzrkdHome.findAll();
    Iterator rkdIt = collection.Iterator();
    while(rkdIt.hasNext()){
      WzRkd wzrkd  = (WzRkd)rkdIt.next();
      Iterator rkdmxIt = wzrkd.getWzrkdmxList().Iterator();
      while(rkdmxIt.hasNext()) {
        WzRkdmx rkdmx = (WzRkdmx)rkdmxIt.next();
        WzWzdm wzdm = (WzWzdm)rkdmx.getWzdm();
        单位代码 dwdm = rkdmx.getDwdm();
        入库单号 rkdId = rkdmx.getRkdId();
        物资编码 wzbm = rkdmx.getWzbm();
        物资名称 wzmc = rkdmx.getWz().getWzmc();
        规格型号 ggxh = rkdmx.getWz().getGgxh();
        进价 jj = rkdmx.getJj();
        ...
        list.add(...);
      }   
    }