开发ejb有很多限制的,楼主可以把代码帖出来看看.

解决方案 »

  1.   

    我用的是,stateful sessionbean :bean里的方法是:public List ListAll(String hql) {    List lis=null;
        try{    Hibernate hibernate=new Hibernate();
        Session ses=hibernate.getSession();    Transaction tx=ses.beginTransaction();
        lis=ses.find(hql);
        tx.commit();
        ses.close();
        return lis;
      }catch(Exception e){
        System.out.println("Error in listbean:"+e);
      }
       return lis;
      }其中Hinernate对象的class是:Hibernate.java:public class Hibernate {  private Configuration cfg;
       private SessionFactory factory;
       private Session session;
      public Hibernate() {
                try{
                    this.cfg=new Configuration();
                    cfg.configure();
                    this.factory=this.cfg.buildSessionFactory();
                    this.session=this.factory.openSession();                }catch(Exception e1){
                    System.out.println("Error e1 in list:"+e1);
                    }  }
      public Session getSession(){
          return this.session;
      }
    调用的程序是:
     EjbClient client=new EjbClient("ListLocalHome",ListLocalHome.class);
        ListLocalHome home=(ListLocalHome)client.getHome();
        ListLocal local=home.create(5);
        List list=local.ListAll("from Employee");    /*List lis=null;
        Hibernate hibernate=new Hibernate();
        Session ses=hibernate.getSession();    Transaction tx=ses.beginTransaction();
        lis=ses.find("from Employee");
        tx.commit();
        ses.close();*/
    如果,我在jsp文件里用 上面注释的代码就没问题,但是,用 没有注释的代码,就会在bean里抛出 :commit sql Exception:
      

  2.   

    关注,正想学习hibernate。
    可是没有时间。
      

  3.   

    抛出:
    Error in listbean:net.sf.hibernate.TransactionException: Commit failed with SQL exception:
      

  4.   

    我想你可以去调一调ejb的事务级别试试.
      

  5.   

    谢谢,redex(cc):
             问题,解决了! 要把ejb的事务级别设置成 BEAN,而不是 container...马上个分,,,,