每个Entity Bean 对象一般都是数据库的视图,对应着数据库中唯一的一块数据(可近似认为是连接查询出来的一条数据),对Bean 操作实际上是对其对应的数据库进行的,例如:银行账户,是一个最经典的例子,几乎每本书上都有这个例子,是由数据库中的多个表中的字段组成的,具有唯一性,
Entity Bean 的 Finder 方法可以返回实体bean 主键的集合(枚举),实际上就是返回的数据库中的主键值的集合,不知道是不是你要得数据集。可以看一下 BMP 实体Bean 得开发,它的操作都是用sql 语句直接对数据库操作。我也是刚刚开始学,理解的不对的地方请大家原谅,互相学习吧

解决方案 »

  1.   


    楼上所说不错,为什么要返回一个数据集呢?每个实体Bean对应一条记录的,要返回多个记录可以把数据集变成一个Collection(注意只是主键的collection而已不是全部记录字段的collection)。
      

  2.   

    ejb是不支持数据集返回的,你还是把数据集转化成一个二级向量返回吧,那样的话是没问题的
      

  3.   

    ejb的finder可以返回数据集,楼上的说法不对
    以下摘自j2ee文档:
    The Finder Methods 
    The finder methods allow clients to locate entity beans. The SavingsAccountClient program locates entity beans with three finder methods: SavingsAccount jones = home.findByPrimaryKey("836");
    ...
    Collection c = home.findByLastName("Smith");
    ...
    Collection c = home.findInRange(20.00, 99.00);
     For every finder method available to a client, the entity bean class must implement a corresponding method that begins with the prefix ejbFind. The SavingsAccountBean class, for example, implements the ejbFindByLastName method as follows: public Collection ejbFindByLastName(String lastName)
       throws FinderException {

       Collection result;

       try {
          result = selectByLastName(lastName);
        } catch (Exception ex) {
            throw new EJBException("ejbFindByLastName " + 
               ex.getMessage());
        }
        return result;
    }
     
      

  4.   

    我想说几点,使用entity bean返回一个实体数据集并不是象楼上所言一般不需要,的确实体bean是一个数据表行的体现,但在ejb体系中事务逻辑所指的1toN,Nto1,NtoN对应中,通过数据集finder反馈数据是十分方便的
    finder是一个const操作(很抱歉用这个c++名词),也就是说是只读的,finder的操作不会对数据内容有改变,所以返回一个数据集也是安全的,虽然在finder操作后事务逻辑为保持数据同步仍然会进行store和load
    很典型的例子应用在定单与定单物品之间,可以通过数据集finder使用定单标识获取该定单所有的物品实体bean集合
      

  5.   

    ejbHome :uTableHome
    ejb:uTable我用此方法得到纪录的数量
    Collection c = uTablehome.findAll();
    下一步如何取出每一条纪录的值呢?
      

  6.   


    To xiangqian(天阁流云):你弄错了,这个集不是那个集。实体bean是可以返回Collection的,这点谁都知道,但不是ResultSet!
      

  7.   

    ejbHome :uTableHome
    ejb:uTable我用此方法得到集合
    Collection c = uTablehome.findAll();
    下一步如何取出每一条的值呢?可以了吧!
    我这样他说不对:
    Iterator i = c.iterator();
    uTable ut = (uTable)i.next();  //这错了
      

  8.   

    我如何得到每一个的键值呢?

    ejb如何浏览一个表中的值呢?
      

  9.   

    是呀:)
    我到现在连ejb到底是个什么东东还不太明白。:_<
      

  10.   

    我用此方法得到集合
    Collection c = uTablehome.findAll();
    下一步如何取出每一条的值呢?可以了吧!
    我这样他说不对:
    Iterator i = c.iterator();
    uTable ut = (uTable)i.next();  //这错了没有人可以告诉我Collection 如何使用吗?
    我刚学不久,大家拉一把!
      

  11.   


    如何用Collection可以看一下API文档,其实Vector也是一种collection,你也可以直接用vcector来实现,在ejb中返回vector (vector实现了collection的接口!!!)
      

  12.   


    :)  不好意思,我看错了,我楼上说的是resultset,我就着说下去了。而且我也说了用collection。但是书上有很多都是用collection返回,不存在什么书上没有例子的问题。
      

  13.   

    Collection c = uTablehome.findAll();
    Iterator i = c.iterator();while (i.hasNext()){
      Object object = i.next();
      uTable ut = (uTable) PortableRemoteObject.narrow(object,uTable.class);  ut.getter() //在这里,ut就已经是数据库中的一条记录了,用它的get类方法得到数据。
    }
      

  14.   


    我刚看到一个很好的文章:用RowSet返回比vector要方便的多!!!!!详细见:
    http://developer.java.sun.com/developer/Books/JDBCTutorial/chapter5.html
    http://www.chinajavaworld.com/
      

  15.   

    rowSet 出世没有? 我怎么找不到在哪里有呢?!