我没学过cmr .
不过你的问题
1. 不知道你的关系表是什么意思,关系就是关系,怎么还表 ?
2.关系只是关系.要什么实体? 不太明白
3. 关系.如果你是用jb的话,可以可视化的设计各个实体bean之间关系... 其它的就不清楚了.
关系定义在ejb-jar.xml里
4. 你的这些表的关系,应该是 user->role role->action .只有见两个关系,user -> action之间是不可能之间建立关系的...
5. 具体代码就不清楚了,自己多动手试验吧 :)以上不一定正确,只是个人意见.我也仅仅试验过一次关系而已 :)
不过你的问题
1. 不知道你的关系表是什么意思,关系就是关系,怎么还表 ?
2.关系只是关系.要什么实体? 不太明白
3. 关系.如果你是用jb的话,可以可视化的设计各个实体bean之间关系... 其它的就不清楚了.
关系定义在ejb-jar.xml里
4. 你的这些表的关系,应该是 user->role role->action .只有见两个关系,user -> action之间是不可能之间建立关系的...
5. 具体代码就不清楚了,自己多动手试验吧 :)以上不一定正确,只是个人意见.我也仅仅试验过一次关系而已 :)
你在getRoles()的时候,估计引用了多个bean的多个方法,因而jboss本身对事务完整性进行了警告,这可能就是原因.
role表和user-role关系表
role表和role-action关系表
action表和role-action关系表
这样分别建立relationship
可能“关系表”这个词是我杜撰的,我以为别人能看懂的,没想到……
好,亡羊补牢,我现在对我杜撰的名词“关系表”做一个解释。在ER图中,有两个重要概念,即实体(E)和关系(R),比如说学生选课,就有两个实体(学生、课)和一个关系(选),这个关系是一个多对多关系,即一个学生可以选多门课,并且一门课可以被多个学生选。对于多对多关系必须建立一张表,来记录哪个学生选了哪门课。这张表里必须有学生的主键和课程的主键(称为外键)。这张表就是我所谓的关系表。“关系只是关系.要什么实体?”
我认为关系总是建立在实体的基础上的,没有实体也就不存在任何关系。比如选课关系总是建立在学生和课程这两个实体之间的。“user -> action之间是不可能之间建立关系的”
我觉得从逻辑上来说user到action还是可以建立关系的,一个user可以有多个action,一个action可以被多个user所拥有,这不就是一个多对多关系吗?而且从user->role,role->action不就间接定义了一个user->action的关系吗?我不敢说数据库系统中所有关系都具有传递性,但我觉得这个情况下还是有传递性的。我不知道cmr中的relationship和关系数据库中的relationship是不是同一个概念,如果不是的话,那就当我没说上面的话吧 :-P
CMR字段在两方数据表中各有“外键”的情况下才可使用。(否则通不过JB编译的,这里的外键无需在数据库端设置,只要建立相关字段即可)。