如果有人可以帮助我,我会受伤。我正在尝试找出Google的内容(或任何其他想法!!)基本上,我在用户实体和俱乐部实体(通过称为userclubs的联接表)之间有一个双向映射,我现在想包括一列在代表角色的USERCLUB中,当我调用user.getClubs()时,我还可以确定它们具有什么级别访问权限。是否有一种聪明的方法可以使用冬眠来进行此操作,或者我需要重新考虑数据库结构?感谢您的任何帮助(或仅仅为了阅读而已!!)

user.hbm.xml看起来有点像

<set name="clubs" table="userClubs" cascade="save-update">
         <key column="user_ID"/>
         <many-to-many column="activity_ID"
           class="com.ActivityGB.client.domain.Activity"/>
</set>

Activity.hbm.xml部分

<set name="members" inverse="true" table="userClubs" cascade="save-update">
        <key column="activity_ID"/>
        <many-to-many column="user_ID"
            class="com.ActivityGB.client.domain.User"/>
</set>

当前的USERCLUBS表包含字段ID | USER_ID | activity_id

我想在其中包括ID | USER_ID | activity_id |角色

并能够在双方访问角色...

有帮助吗?

解决方案

最简单的方法是从联接表中创建一个实体。

您可以将两个外键使用俱乐部和用户实体作为ID(使用u003Ccomposite-id>),但我建议添加一个技术ID列,并在外国钥匙上设置唯一约束(否则,当您保存俱乐部或用户无法工作时的级联。 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mpapping-mapping-declaration-compompositeid).

如果您命名了新的实体USERCLUB,则需要从用户到UserClub以及从俱乐部到USERCLUB的一对一,以及从Userclub到Club以及从Userclub到Userclub到用户的多对一。

您将有一些重构可以在Java代码上进行,但是您不必更改DB(除了添加ID和角色列外)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top