关于多字段多对多关系的映射

目前数据库有三张表 分别是 t_purview,t_folder,t_role,然后以他们的主键为外键建立了一张中间表

pur_role_folder_fun

其中的字段包括 pur_id,folder_id,role_id ,三个字段分别为A,B,C的外键 ,并且以三个外键建立联合主键

数据库的结构:

[img]/upload/attachment/135055/3c9fb0ea-3567-3517-a663-e3c06bd6f36a.jpg[/img]

三个类的属性分别为:


public class Folder{
...
private Set<Role> roles;
private Set<Purview> purviews;
}



public class Purview{
...
private Set<Role> roles;
private Set<Folder> folders;
}



public class Role{
...
private Set<Role> folders;
private Set<Purview> purviews;
}



[color=red]想请教下下面的这种hibernate 映射写法是否有问题[/color]


以下为 对应类 Role 的映射

<set name="purviews" table="pur_role_folder_fun" cascade="save-update">
<key column="role_id" />
<many-to-many class="com.yzmoa.pubdir.entity.Purview" column="pur_id"></many-to-many>
</set>
<set name="folders" table="pur_role_folder_fun" cascade="save-update">
<key column="role_id" />
<many-to-many class="com.yzmoa.pubdir.entity.Folder" column="folder_id"></many-to-many>
</set>

以下为 对应类 Purview 的映射

<set name="roles" table="pur_role_folder_fun" cascade="save-update" >
<key column="pur_id" />
<many-to-many class="com.yzmoa.core.entity.Role" column="role_id"></many-to-many>
</set>
<set name="folders" table="pur_role_folder_fun" cascade="save-update" >
<key column="pur_id" />
<many-to-many class="com.yzmoa.pubdir.entity.Folder" column="folder_id"></many-to-many>
</set>

以下为 对应类 Folder的映射

<set name="roles" table="pur_role_folder_fun" cascade="save-update">
<key column="folder_id"/>
<many-to-many class="com.yzmoa.core.entity.Role" column="role_id" ></many-to-many>
</set>
<set name="purviews" table="pur_role_folder_fun" cascade="save-update">
<key column="folder_id"/>
<many-to-many class="com.yzmoa.pubdir.entity.Purview" column="pur_id" ></many-to-many>
</set>


-----------------------------------------------------------------------------------------

现在在开发中,我遇到的问题是 当向数据库中插入一个Folder对象(属性中的purview集合和role集合都有值)时,
我把它执行的sql打印出来后发现 除在t_folder中加入一条记录外 ,在pur_role_folder_fun中也会做插操作,但是只是插入3个字段中的2个值。

以下是输出的sql :
insert into pur_role_folder_fun (folder_id, role_id) values (?, ?)


如果是
insert into pur_role_folder_fun (folder_id, role_id,pur_id) values (?, ?,?)
这是我
要的效果

麻烦各位了!谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值