我没学过cmr .
不过你的问题
1. 不知道你的关系表是什么意思,关系就是关系,怎么还表 ?
2.关系只是关系.要什么实体?   不太明白
3. 关系.如果你是用jb的话,可以可视化的设计各个实体bean之间关系... 其它的就不清楚了.
   关系定义在ejb-jar.xml里
4. 你的这些表的关系,应该是 user->role  role->action .只有见两个关系,user -> action之间是不可能之间建立关系的... 
5. 具体代码就不清楚了,自己多动手试验吧 :)以上不一定正确,只是个人意见.我也仅仅试验过一次关系而已 :)

解决方案 »

  1.   

    好问题,我看看.
    你在getRoles()的时候,估计引用了多个bean的多个方法,因而jboss本身对事务完整性进行了警告,这可能就是原因.
      

  2.   

    user表和user-role关系表
    role表和user-role关系表
    role表和role-action关系表
    action表和role-action关系表
    这样分别建立relationship
      

  3.   

    “不知道你的关系表是什么意思,关系就是关系,怎么还表 ”
        可能“关系表”这个词是我杜撰的,我以为别人能看懂的,没想到……
        好,亡羊补牢,我现在对我杜撰的名词“关系表”做一个解释。在ER图中,有两个重要概念,即实体(E)和关系(R),比如说学生选课,就有两个实体(学生、课)和一个关系(选),这个关系是一个多对多关系,即一个学生可以选多门课,并且一门课可以被多个学生选。对于多对多关系必须建立一张表,来记录哪个学生选了哪门课。这张表里必须有学生的主键和课程的主键(称为外键)。这张表就是我所谓的关系表。“关系只是关系.要什么实体?”
        我认为关系总是建立在实体的基础上的,没有实体也就不存在任何关系。比如选课关系总是建立在学生和课程这两个实体之间的。“user -> action之间是不可能之间建立关系的”
        我觉得从逻辑上来说user到action还是可以建立关系的,一个user可以有多个action,一个action可以被多个user所拥有,这不就是一个多对多关系吗?而且从user->role,role->action不就间接定义了一个user->action的关系吗?我不敢说数据库系统中所有关系都具有传递性,但我觉得这个情况下还是有传递性的。我不知道cmr中的relationship和关系数据库中的relationship是不是同一个概念,如果不是的话,那就当我没说上面的话吧 :-P
      

  4.   

    没有写过CMP的东西,不过如果是BMP的话,如果坚持不在session bean中写连接数据库的语句的话,那么所有的关联表(我习惯把你的“关系表”这么叫。:) )都应该对应一个entity bean.
      

  5.   

    我觉得既然你用了关系表(relationship table),就不必使用CMR字段。不过你这个relationship table 需要用级联的地方一定要用级联。在个实体bean 中间就不必使用CMR字段了。
    CMR字段在两方数据表中各有“外键”的情况下才可使用。(否则通不过JB编译的,这里的外键无需在数据库端设置,只要建立相关字段即可)。