出现异常When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX method for the cmp-field may n

Morgan_ma 2003-08-12 04:09:25
jbuilder+weblogic开发。两个表
一张用户信息表,主键userid,另外一张权限表,主键authid。其中用户信息表中的authtype是authid的外键。
权限表和用户信息表是1-多的关系,cmr为authtype,但是现在调用用户信息表的cmp的create方法,出现异常When a cmp-field and a cmr-field (relationship) are mapped to the same column, the setXXX method for the cmp-field may not be called. The cmp-field is read-only.
查了许多资料,在EJB规范说:
during ejbCreate the instance cannot acquire a reference to the associated
entity object, and that reference is required by the set method.
In the ejbPostCreate method, on the other hand, the instance may reference
the associated entity object. Thus, a call to set can be made.

但是不知道该具体怎么做。。。请大家帮忙。。。
...全文
42 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Morgan_ma 2003-08-13
  • 打赏
  • 举报
回复
自己解决啦。。。结帖!
Morgan_ma 2003-08-12
  • 打赏
  • 举报
回复
不行啊。。。还是同样的异常错误。。。
friday1103 2003-08-12
  • 打赏
  • 举报
回复
那你把setAuth(authType);这一步放在用户实体的ejbcreate()中,这样看行不行?
Morgan_ma 2003-08-12
  • 打赏
  • 举报
回复
刚刚。。。你没看懂我的问题。。。
hessian 2003-08-12
  • 打赏
  • 举报
回复
马兄,先把所有可能的权限实体都建好.让后再创建用户信息的实体嘛.
Morgan_ma 2003-08-12
  • 打赏
  • 举报
回复
我想了一下,很显然这里有个错误。。。因为在上面这种做法里,新建用户分两步,第一步,创建用户信息如id等等。而第二步分配权限authType。但是因为这是一条记录,我的authType不能为空。所以第一步就不行。。。因为数据库无法将空值放入authType中。。。所以失败了。。。

还有没有其他的解决方法?
Morgan_ma 2003-08-12
  • 打赏
  • 举报
回复
我懂你的意思了,我先试试看。。。
friday1103 2003-08-12
  • 打赏
  • 举报
回复
那么你建立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);
就可以加入了。

写了这么多,不知道说清楚了没有。见笑了。
Morgan_ma 2003-08-12
  • 打赏
  • 举报
回复
权限表和用户信息表是1-多的关系。。。一种权限可以给多个用户,每个用户只有一种权限。。。
friday1103 2003-08-12
  • 打赏
  • 举报
回复
权限和用户这两个实体bean是什么关系?多对多?一对多?
Morgan_ma 2003-08-12
  • 打赏
  • 举报
回复
这个我已经清楚了。。。如你所说,我的权限表也是个实体bean,那么当我新建一个用户的时候,怎么把这个用户相应的权限写到authtype呢?就是说setauthtype()在怎么在权限表的实体bean中调用?
friday1103 2003-08-12
  • 打赏
  • 举报
回复
因为authtype是authid的外键,所以在用户表中是不能改变这个值的(只能读),这个值是在权限表中确定的。如果你的权限表也是一个实体Bean,那么这个值就是在ejbcreate()中确定的。

67,550

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧