休眠双向多对多映射建议!
Posted
技术标签:
【中文标题】休眠双向多对多映射建议!【英文标题】:Hibernate Bi- Directional many to many mapping advice! 【发布时间】:2010-04-29 16:55:56 【问题描述】:如果有人能帮助我,我很受伤。我正在尝试找出谷歌搜索的内容(或任何其他想法!!)基本上我在用户实体和俱乐部实体之间有一个双向多对多映射(通过一个名为 userClubs 的连接表)我现在想包含一个列在代表角色的 userClubs 中,这样当我调用 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 |活动ID
我想加入其中 编号 |用户 ID |活动ID |角色
并且能够访问双方的角色...
【问题讨论】:
【参考方案1】:最简单的方法是从连接表中创建一个实体。
您可以使用俱乐部和用户实体的两个外键作为 id(使用
如果您将新实体命名为 UserClub,您将需要从 User 到 UserClub 和从 Club 到 UserClub 的一对多,以及从 UserClub 到 Club 以及从 UserClub 到 User 的多对一。
您将对 java 代码进行一些重构,但您不必更改 db(除了添加 id 和 role 列)。
【讨论】:
这很有魅力,感谢蒂埃里的迅速反应:)以上是关于休眠双向多对多映射建议!的主要内容,如果未能解决你的问题,请参考以下文章