Hibernate Bi Torieweral to许多映射建议!
题
如果有人可以帮助我,我会受伤。我正在尝试找出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和角色列外)。
不隶属于 StackOverflow