因为authtype是authid的外键,所以在用户表中是不能改变这个值的(只能读),这个值是在权限表中确定的。如果你的权限表也是一个实体Bean,那么这个值就是在ejbcreate()中确定的。

解决方案 »

  1.   

    这个我已经清楚了如你所说,我的权限表也是个实体bean,那么当我新建一个用户的时候,怎么把这个用户相应的权限写到authtype呢?就是说setauthtype()在怎么在权限表的实体bean中调用?
      

  2.   

    权限和用户这两个实体bean是什么关系?多对多?一对多?
      

  3.   

    那么你建立auth实体Bean和用户Bean的关系,为双边的,为一对多的,然后会有个cmr字段为auth。这个auth设为一个bean instance。这样就可以建立对这个auth实体bean的set和get方法。
    要实现把这个权限加给这个用户bean,你可以建立一个session bean,在这个session bean中,加人一个方法,比如:addUser(),参数可以是用户的信息(比如id,name,等等)和authType,
    然后
    User user = userHome.create(id, name,);
    auth authType = authHome.findByPrimaryKey(authType);
    user.setAuth(authType);
    就可以加入了。写了这么多,不知道说清楚了没有。见笑了。
      

  4.   

    我想了一下,很显然这里有个错误因为在上面这种做法里,新建用户分两步,第一步,创建用户信息如id等等。而第二步分配权限authType。但是因为这是一条记录,我的authType不能为空。所以第一步就不行因为数据库无法将空值放入authType中所以失败了还有没有其他的解决方法?
      

  5.   

    那你把setAuth(authType);这一步放在用户实体的ejbcreate()中,这样看行不行?