javax.ejb.DuplicateKeyException: Bean with primary key: 'A02' already exists.
根据提示好象“A02”已经存在。你的create方法只有一个参数id?如果数据库中有字段不允许为空,那么create时要加进去。

解决方案 »

  1.   

    To  tusm() 
       我的create是只有一个参数的,
    这是JB生成的Home(为什么JB没有在这里自动的认识到呢?)
    public MybookRemote create(String bookId) throws CreateException, RemoteException;我的数据库中字段都不允许为空的,那我client.create(id);时,就在数据库里写数据了,所以其他字段没值,报错。
      那如果在我不改变表结构,现在应该怎么做呢?应该create(id,"","")这样的形式么?如果表有20个字段,都不允许为空,难道在create时,要create("","",""......)这样20个么??
      一般这样的情况是怎么考虑的呢?? 
      还望指教。谢谢
      

  2.   

    把关键字段设为“不允许为空”,其它字段为空,这样create()里就可只包含少量关键字段,其他字段在需要是就可调用setXXX方法进行设置.
     通常情况下一个表不会包含如此多字段,分成多个表不更好.
      

  3.   

    不好意思,今天没上线;如果你把所有的字段都设成不为空,那当然要在EJB Designer中把每个字段对应的成员变量的In create属性设为true;调用时当然要create("","",""......)。如果字段多的话,应该有字段可以为空的吧!