Hibernate(九)映射多对多关联关系

一、单向 n-n

n-n 的关联必须使用连接表

与 1-n 映射类似,必须为 set 集合元素添加 key 子元素,指定 CATEGORIES_ITEMS 表中参照 CATEGORIES 表的外键为 CATEGORIY_ID. 与 1-n 关联映射不同的是,建立 n-n 关联时, 集合中的元素使用 many-to-many。many-to-many 子元素的 class 属性指定 items 集合中存放的是 Item 对象, column 属性指定  CATEGORIES_ITEMS 表中参照 ITEMS 表的外键为 ITEM_ID。

(1)创建实体

(2)映射文件

(4)指定关联文件

(5)执行操作,生成表

(6)表的结构如下

(7)执行保存数据操作

(8)数据

(9)查询操作,内连接

二、双向n-n关联

双向 n-n 关联需要两端都使用集合属性

双向n-n关联必须使用连接表

集合属性应增加 key 子元素用以映射外键列, 集合元素里还应增加many-to-many子元素关联实体类

在双向 n-n 关联的两边都需指定连接表的表名及外键列的列名. 两个集合元素 set 的 table 元素的值必须指定,而且必须相同。set元素的两个子元素:key 和 many-to-many 都必须指定 column 属性,其中,key 和 many-to-many 分别指定本持久化类和关联类在连接表中的外键列名,因此两边的 key 与 many-to-many 的column属性交叉相同。也就是说,一边的set元素的key的 cloumn值为a,many-to-many 的 column 为b;则另一边的 set 元素的 key 的 column 值 b,many-to-many的 column 值为 a. 

对于双向 n-n 关联, 必须把其中一端的 inverse 设置为 true, 否则两端都维护关联关系可能会造成主键冲突.

(1)实体表Item增加了category集合

(2)映射文件增加了set节点

(3)执行保存操作

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Hibernate对集合属性的操作 持久化对象的映射集合属性:Set List Collection Map So...
    WesleyLien阅读 266评论 0 0
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,960评论 0 13
  • 多对多 多对多关系在数据库中不能使用两张表来完成,要在两种表中间建立一个关系表,来维护两个表的对应关系。 关系模型...
    mm_cuckoo阅读 366评论 0 1
  • 人生就像蒲公英,看似自由,却身不由己。有些事,不是不在意,而是在意了又能怎样。自己尽力了就好,人生没有如果,只有后...
    6310阅读 142评论 0 0
  • 回想着以前的时光,不知不觉已经过了两年了,说我们没有变,我们却变了很多,但真要看看哪里变了却找不出来。从一开始我...
    爱笑的女孩阅读 594评论 0 0

友情链接更多精彩内容