`
qzww5324
  • 浏览: 38114 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多
目前数据库有三张表 分别是 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
分享到:
评论
1 楼 DynamicMan 2009-09-05  
你的意思是实现t_folder和t_role这两张表的多对多关系吧,如果是的话,那么你这个关联映射简直不能再看下去了

相关推荐

    hibernate 映射关系学习入门 多对多实体映射

    本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...

    ibatis 一对多 多对多完整映射

    本文将深入探讨如何在iBATIS中实现一对多和多对多的关系映射,并提供相关的源码分析和工具使用技巧。 **一对多关系映射** 在数据库设计中,一对多关系是指一个父记录可以与多个子记录关联,例如,一个用户可以有多...

    hibernate多对多关联映射

    在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...

    hibernate关联映射详解SSH 多对多,一对多关系对象映射

    本篇文章将深入探讨Hibernate中的一对多和多对多关系映射。 首先,让我们理解一对多关联映射。在数据库中,一对多关系意味着一个表中的记录可以与另一个表中的多个记录相关联。在Hibernate中,这可以通过在实体类中...

    ibatis 一对多关系映射

    首先,我们需要在映射文件中定义主表(一对一端)和从表(多对一端)的映射。假设我们有一个`User`类对应`users`表,一个`Order`类对应`orders`表,其中`orders`表有一个`user_id`字段作为外键关联到`users`表。 在...

    映射多对多及一对一关系

    ### 映射多对多及一对一关系 #### 一、多对多关系映射 在数据库设计中,当两个实体之间存在多对多的关系时,通常会使用一个关联表来维护这种关系。例如,在给定的例子中,`Employees`表和`Roles`表之间的关系即为...

    EF6多对多,一对多关系映射样例代码

    在本示例中,我们将深入探讨如何在EF6中配置和使用多对多和一对多关系,特别是针对Oracle数据库的配置。 首先,多对多关系是指两个实体类型之间存在多个连接,每个实体都可以关联到多个实例。例如,一个学生可以...

    jpa的实体映射关系7种

    在单向多对多关系中,一个实体可以关联多个其他实体,而这些实体并不知道这个关联。使用`@ManyToMany`注解,关联表通常由JPA自动创建,除非自定义了`@JoinTable`。 7. **双向多对多**: 双向多对多是最复杂的关系...

    oracle 数据库关系映射

    2. **多对多(N:M)关系映射**: - 多对多关系表示两个实体之间存在多种关联的可能性。这种情况下,通常需要创建一个新的关联表来存储两个实体间的关联信息。 - 比如,课程和学生之间的关系,一个学生可以选修多门...

    hibernate关系映射多对多关系

    综上所述,这个压缩包提供了关于Hibernate关系映射的全面教程,包括多对多、一对一和一对多的关系配置,以及如何在Spring+Hibernate+Struts环境中应用这些关系。对于想要深入理解Hibernate并提升开发效率的Java...

    Hibernate使用 Map实现多对多映射

    在Java的持久化框架Hibernate中,多对多映射是一种常见的关系映射方式,用于处理两个实体类之间一对多或多对一的关系。在这个例子中,我们看到的是`Team`(团队)与`Member`(成员)之间的多对多关系,通过`Map`数据...

    SpringBoot中mybatis表关联映射关系(一对多嵌套:结果方式)

    SpringBoot 中 MyBatis 表关联映射关系(一对多嵌套:结果方式) 在 SpringBoot 中,MyBatis 是一个非常流行的持久层框架,它提供了强大的持久化功能,能够将 Java 对象与数据库表进行映射。在实际开发中,我们经常...

    10 映射-- 多对多(老师与学生)

    对于源码分析,我们可以查看Hibernate源代码中关于多对多映射的相关实现,理解其内部逻辑。同时,利用诸如IntelliJ IDEA这样的开发工具,可以便捷地进行映射配置和调试。 通过以上讲解,我们可以看到,多对多映射...

    hibernate单向多对多映射(XML版)

    总结起来,Hibernate的单向多对多映射通过XML配置文件定义了实体之间的关系,使得在Java代码中处理数据库的多对多关联变得更加简单和直观。理解和熟练掌握这一映射方式,对于提升Java持久层开发的效率和质量至关重要...

    EJB3一对多和多对一关系映射实例

    本实例将深入探讨EJB3中的一对多和多对一关系映射。 一、一对多关系映射 在现实世界中,一对多关系非常常见,例如一个班级有多名学生,一个部门有多名员工。在EJB3中,我们可以通过`@OneToMany`注解来表示这种关系...

    Hibernate之关联关系映射(一对多和多对一映射,多对多映射).docx

    本文将深入探讨Hibernate中的一对多、多对一以及多对多映射。 1. 一对多与多对一映射: 在现实世界中,许多关系表现为一对多或多对一的形式。例如,一个老师可以教授多个学生,而一个学生只能被一个老师教导;同样...

    Hibernate一对多,多对一映射

    本主题将深入探讨Hibernate中的一对多和多对一映射关系,这两种关系在实际的业务场景中非常常见。 首先,我们来理解一下一对多映射(One-to-Many Mapping)。在数据库设计中,一对多关系意味着一个父记录可以与多...

    hibernate(一对多,多对一映射)操作

    本文将深入探讨Hibernate中的一对多和多对一映射关系,并通过一个实际的demo演示它们在增删查改操作中的应用。 首先,我们要理解什么是数据库的关联关系。在数据库设计中,我们经常遇到一种情况,即一个实体可能与...

    MyBatis一对多映射

    一对多映射指的是一个父类实体对应多个子类实体的关系,例如一个学生可以有多个课程,一个部门可以有多名员工等。 一、一对多映射的基本概念 在数据库中,如果一个表的记录(主表)与另一个表的记录(从表)之间...

Global site tag (gtag.js) - Google Analytics