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?
在你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进行事务操作
我觉得你是调用了多次,如果能debug你就跟踪以下
another one is remove(Object)
Object is for primary key, but, what is "Handle" for?
The reference of one EJB Bean?
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进行事务操作