1.应该调用remove方法,怎么能调用ejbRemove方法呢,
ejbRemove方法是由Container回调用的2. remove以后,bean并不一定正直删除,一般情况是回收到bean沲中。

解决方案 »

  1.   

    肯定是调remove()的时候,记录已经被删除了,当然会出错了
      

  2.   

    当容器打算删除你的BEAN实例时就会调用ejbRemove方法.不是客户端调用ejbRemove()的.
      

  3.   

    cmp?
    我觉得你是调用了多次,如果能debug你就跟踪以下
      

  4.   

    客户端是不能调用ejbRemove以及所有以ejb开头的方法的,进一步说这些类是在客户端代码重应该是不可见的。
      

  5.   

    ok, in EJB, there are two remove methods, one is remove(Handle),
    another one is remove(Object)
    Object is for primary key, but, what is "Handle" for?
    The reference of one EJB Bean?
      

  6.   

    在你remove之前,肯定已经获得了一个EntityBean的Remote引用或Local引用,只有两种可能:
    MyEntityLocal r = home.create(...); // 用create方法创建一个entity bean
      or
    MyEntityLocal r = home.findByXxxx(...); // 用finder方法获得一个或多个entity bean
    然后调用
    r.remove();一旦调用成功了,此纪录在数据库中就被删除,后面不可对r操作若调用失败,会有失败的原因,通常有两种:
    1.此Entity已被删除,可能有些程序绕过entity bean直接用jdbc删掉了数据库纪录
    2.当前不能删除此entity bean,比如可能另一个线程正在对此entity进行事务操作