return null 当然不行,要返回该条记录的主键值呀

解决方案 »

  1.   

    因为:[UserInfoID] [int] NOT NULL你create的时候只是setID,所以回报错,UserInfoID不能为空。。
    还要加setUserInfoID 
      

  2.   

    TO :fredxiao(fred) **************************
    return null 当然不行,要返回该条记录的主键值呀
    ***************************这样写没有错的. 把ID 的类型换成STRING 型试一下!
      

  3.   

    在EJB中的ejbCreate中如果对某一个字段没有赋值,就会在创建数据的时候用空代替,
    而不会使用在数据库中的缺省值,
     public Integer ejbCreate(Integer id) throws CreateException
      {
        setId(id);
        return null;
      }你的上面只有一个ID提供了值,他就会在其他字段使用NULL,提一下,这里只是针对EJB中有的FIELD(你可以定义的EJB字段可以比你的
    数据库表的字段少),在EJB中没有的字段,他不会出现在EJB存储的SQL中,
    因此他是可以使用缺省值的
      

  4.   

    楼主,你可以给没有提供的字段一个初始值public Integer ejbCreate(Integer id) throws CreateException
      {
        setId(id);
        setName("") ;
        setPassword("");
        setUserInfoID(new Integer(0)) ;
        return null;
      }eaglezhang(手中无剑,心中有剑):
    EJB中的ejbCreate可以返回null,实际上他的规范的例子就是那样的,其实是有容器管理的,
    所以返回什么,容器都不会理会,他会直接把这个EJBBEAN封装成对象提供给调用者
      

  5.   

    eaglezhang(手中无剑,心中有剑):
    对不起,把写给fredxiao(fred)不小心写给你了
      

  6.   

    是,我刚才试了一下,除了主键外你的其它字段也设成了not null,这样在ejbCreate时出错
      

  7.   

    无法将 NULL 值插入列 'UserInfoID',表 'Shop.dbo.Client';该列不允许空值。INSERT 失败。
      

  8.   

    在测试程序中:    cr.setUserInfoID(new Integer(34));
    这个语句就是在UserInfoID字段上加入34的值,所以不应该是NULL,但为何还是产生NULL的错误呢??
      

  9.   

    我在跟踪的时候发现,在ejbCreate的时候,如果有主键以外的其它字段not null立即就错误中断,因些应该是在字段的not null约束,楼主可试试先将其not nul去掉试试
      

  10.   

    ClientRemote cr=clientRemoteHome.create(new Integer(123));
          cr.setName("Abc13");
          cr.setPassword("123456");
          cr.setUserInfoID(new Integer(34));
    你这样写当然是有错误的,home进行create(123)的时候,就已经相当于对数据库进行插入一条id=123,其他字段都为空的数据,而你的数据库定义是全不为空,当然要报错呀(你后面先的几行代码都不能写到数据库了:))
      

  11.   

    zhangxf(反我恕) 的观点我同意
      

  12.   

    对于zhangxf(反我恕),我不同意您的部分观点:
    当我在ejbCreate()中加入方法   
       setId(id);
       setUserInfoID(new Integer(34));
    使得UserInfoID字段有值,但没有
      setName("Abc13");
      setPassword("123456");
    EJB仍能成功地加入数据。