hibernate多对多映射中间表有多余字段问题该如何映射

我有role(角色)表,power(权限)表,role_power表,role和power是多对多关系,role_power为中间表,我现在映射时出现问题了,role-p... 我有role(角色)表,power(权限)表,role_power表,role和power是多对多关系,role_power为中间表,我现在映射时出现问题了,role-power表中的字段有role_id(FK),power_id(FK)和ishasread普通字段,role-id和power_id是role_power表的联合主键,因为中间表有多余字段,那要怎么映射啊?用不了正常的多对多映射,我考虑映射成两个1对多的关系,但是要是这样的话role_power作为一的一方,它在hbm.xml文件中映射时要指定<id>,主键标签啊,我的表中并没有设计有唯一主键这项,那么这个问题该如何解决啊?类定义如下。
class Role_power calss Role class Power
{ { {
private Role role; private int role_id; private int power_id;
private Power power; private Set<Role_power> set; private Set<Role-power> set;
private int ishasread; //get,set省略 //get,set省略
//get,set省略
} } }
展开
 我来答
stefwujj
推荐于2017-12-16 · TA获得超过417个赞
知道小有建树答主
回答量:141
采纳率:100%
帮助的人:208万
展开全部
将多对多创建成两个一对多关系就行了。
你的中间表对象没有主键,第一种方式就是你为中间表增加一个主键,这个也是如果要把中间表映射成对象的推荐方式。
第二种方式就比较复杂,你需要在中间表对象里面再增加两个属性,int role_id,int power_id,用来映射你中间表中作为复合组件的两个外键,然后在Role_power对象中把role_id和power_id映射成compositeid,然后仍然把Role role和Power power两个属性映射成many2one,然后设置这两个属性对应的many-to-one的column为role_id和power_id,然后把这两个属性的insert="false" update="false",就可以了。这样就比较麻烦
还有一种就是你中间表就不要Role role和Power power,而直接把这两个对象改成int roleId,int powerId来映射。
百度网友a662983
2013-09-12
知道答主
回答量:6
采纳率:0%
帮助的人:8475
展开全部

省省是吧。已myeclipse为例

--》

,直接自动生成吧

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baoer1127
2013-09-11 · TA获得超过926个赞
知道小有建树答主
回答量:939
采纳率:71%
帮助的人:332万
展开全部
将多对多转换成一个多对一和一个一对多。中间表自己控制。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式