论坛首页 Java企业应用论坛

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

浏览 1896 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-08-12   最后修改:2009-10-14
目前数据库有三张表 分别是 t_purview,t_folder,t_role,然后以他们的主键为外键建立了一张中间表

pur_role_folder_fun

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

数据库的结构:
     


三个类的属性分别为:

     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;  
     }




想请教下下面的这种hibernate 映射写法是否有问题


以下为 对应类 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 (?, ?,?)
这是我
要的效果

麻烦各位了!谢谢
  • 大小: 101.5 KB
   发表时间:2009-09-05  
你的意思是实现t_folder和t_role这两张表的多对多关系吧,如果是的话,那么你这个关联映射简直不能再看下去了
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics