小弟初学CMP/CMR,有个问题想向老鸟们请教

weya 2003-04-21 03:23:23
数据库中共五张表(三个实体,两个关系),三个实体表分别为user,role,action,两个关系表分别为r_user_role,r_role_action,user与role之间是多对多关系,role和action之间也是多对多关系。我想检索一个特定user所对应的所有action,该怎么做呢?

能不能直接在user和action之间用relationship呢?还是要通过user与role之间的relationship和role与action之间的relationship呢?

还有,对于三个实体表我都建立了相应的实体bean,关系表要不要也建立实体bean?如果不建立的话,container是怎么知道该用什么关系表呢?

我在user和role之间建立了一个relationship,代码里用user.getRoles()获取user所对应的roles,但返回总是一个空的Collection,并且服务器控制台会显示如下信息

15:20:29,741 WARN [TxConnectionManager$LocalXAResource] Prepare called on a local tx. Use of local transactions on a jta transaction with more than one branch may result in inconsistent data in some cases of failure.

请问这是为什么?

我用的环境是jboss-3.2.0_tomcat-4.1.24+JBuilder8+mysql
...全文
81 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hk200 2003-04-27
  • 打赏
  • 举报
回复
我觉得既然你用了关系表(relationship table),就不必使用CMR字段。不过你这个relationship table 需要用级联的地方一定要用级联。在个实体bean 中间就不必使用CMR字段了。
CMR字段在两方数据表中各有“外键”的情况下才可使用。(否则通不过JB编译的,这里的外键无需在数据库端设置,只要建立相关字段即可)。


NickPac 2003-04-24
  • 打赏
  • 举报
回复
没有写过CMP的东西,不过如果是BMP的话,如果坚持不在session bean中写连接数据库的语句的话,那么所有的关联表(我习惯把你的“关系表”这么叫。:) )都应该对应一个entity bean.
pirateRocy 2003-04-24
  • 打赏
  • 举报
回复
up
weya 2003-04-24
  • 打赏
  • 举报
回复
有人熟悉这方面的东西吗
cskkk 2003-04-21
  • 打赏
  • 举报
回复
顶 3
weya 2003-04-21
  • 打赏
  • 举报
回复
“不知道你的关系表是什么意思,关系就是关系,怎么还表 ”
可能“关系表”这个词是我杜撰的,我以为别人能看懂的,没想到……
好,亡羊补牢,我现在对我杜撰的名词“关系表”做一个解释。在ER图中,有两个重要概念,即实体(E)和关系(R),比如说学生选课,就有两个实体(学生、课)和一个关系(选),这个关系是一个多对多关系,即一个学生可以选多门课,并且一门课可以被多个学生选。对于多对多关系必须建立一张表,来记录哪个学生选了哪门课。这张表里必须有学生的主键和课程的主键(称为外键)。这张表就是我所谓的关系表。

“关系只是关系.要什么实体?”
我认为关系总是建立在实体的基础上的,没有实体也就不存在任何关系。比如选课关系总是建立在学生和课程这两个实体之间的。

“user -> action之间是不可能之间建立关系的”
我觉得从逻辑上来说user到action还是可以建立关系的,一个user可以有多个action,一个action可以被多个user所拥有,这不就是一个多对多关系吗?而且从user->role,role->action不就间接定义了一个user->action的关系吗?我不敢说数据库系统中所有关系都具有传递性,但我觉得这个情况下还是有传递性的。

我不知道cmr中的relationship和关系数据库中的relationship是不是同一个概念,如果不是的话,那就当我没说上面的话吧 :-P

proZeus 2003-04-21
  • 打赏
  • 举报
回复
user表和user-role关系表
role表和user-role关系表
role表和role-action关系表
action表和role-action关系表
这样分别建立relationship
jxspace 2003-04-21
  • 打赏
  • 举报
回复
好问题,我看看.
你在getRoles()的时候,估计引用了多个bean的多个方法,因而jboss本身对事务完整性进行了警告,这可能就是原因.
zez 2003-04-21
  • 打赏
  • 举报
回复
我没学过cmr .
不过你的问题
1. 不知道你的关系表是什么意思,关系就是关系,怎么还表 ?
2.关系只是关系.要什么实体? 不太明白
3. 关系.如果你是用jb的话,可以可视化的设计各个实体bean之间关系... 其它的就不清楚了.
关系定义在ejb-jar.xml里
4. 你的这些表的关系,应该是 user->role role->action .只有见两个关系,user -> action之间是不可能之间建立关系的...
5. 具体代码就不清楚了,自己多动手试验吧 :)

以上不一定正确,只是个人意见.我也仅仅试验过一次关系而已 :)

67,515

社区成员

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

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