代码之家  ›  专栏  ›  技术社区  ›  phunehehe

ejbcmp实体bean实际上是什么时候创建的

  •  1
  • phunehehe  · 技术社区  · 15 年前

    public void businessMethod(int number) {
        try {
            MyBeanHome home = lookupMyBean();
            DataSource dataSource = getMyDataSource();
            Statement statement = dataSource.getConnection().createStatement();
            ResultSet result;
            String tableName = "MYBEAN";
            for (int i = 0; i < number; i++) {
                result = statement.executeQuery("select max(ID) + 1 from " + tableName);
                result.next();
                int newID = result.getInt(1);
                System.out.println(newID);
                MyBeanLocal lineLocal = home.create(newID);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    

    的创建方法 MyBean 简单地创建一个新bean newID . 但是,上面的代码只适用于 number = 1 . 如果 number > 1 ,它尝试创建具有相同ID的第二个bean( System.out.println(newID);

    非常感谢!

    1 回复  |  直到 15 年前
        1
  •  1
  •   phunehehe    15 年前

    我发现事务只在业务方法完成时执行,因此第一个实体bean不会存储在数据库中进行检索。下面是一个简单的解决方案

    public void businessMethod(int number) {
        try {
            MyBeanHome home = lookupMyBean();
            DataSource dataSource = getMyDataSource();
            Statement statement = dataSource.getConnection().createStatement();
            ResultSet result;
            String tableName = "MYBEAN";
            result = statement.executeQuery("select max(ID) + 1 from " + tableName);
            result.next();
            int newID = result.getInt(1);
            for (int i = 0; i < number; i++) {
                System.out.println(newID);
                MyBeanLocal lineLocal = home.create(newID++);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    
    推荐文章