Hibernate 多对多双向关联

Windows下通过Ollama安装使用DeepSeek本地大模型 本地安装运行Deepseek大模型 阅读详情

  
  
一、模型介绍 
  
多个人(Person )对应多个地址(Address )。
一个人可对应多个地址,一个地址也可以对应多个人。 
  
二、实体(省略getter 、setter 方法)
 
  
public class Personnn_sx { 
    private int personid; 
    private String name; 
    private int age; 
    private Set addresses=new HashSet(); 
  
public class Addressnn_sx { 
    private int addressid; 
    private String addressdetail; 
    private Set persons = new HashSet(); 
  
三、表模型 
  
mysql> desc person_nn_sx; 
+----------+--------------+------+-----+---------+----------------+ 
| Field    | Type         | Null | Key | Default | Extra          | 
+----------+--------------+------+-----+---------+----------------+ 
| personid | int(11)      | NO   | PRI | NULL    | auto_increment | 
| name     | varchar(255) | YES  |     | NULL    |                | 
| age      | int(11)      | YES  |     | NULL    |                | 
+----------+--------------+------+-----+---------+----------------+ 
  
mysql> desc address_nn_sx; 
+---------------+--------------+------+-----+---------+----------------+ 
| Field         | Type         | Null | Key | Default | Extra          | 
+---------------+--------------+------+-----+---------+----------------+ 
| addressid     | int(11)      | NO   | PRI | NULL    | auto_increment | 
| addressdetail | varchar(255) | YES  |     | NULL    |                | 
+---------------+--------------+------+-----+---------+----------------+ 
  
mysql> desc join_nn_sx; 
+-----------+---------+------+-----+---------+-------+ 
| Field     | Type    | Null | Key | Default | Extra | 
+-----------+---------+------+-----+---------+-------+ 
| addressid | int(11) | NO   | PRI |         |       | 
| personid  | int(11) | NO   | PRI |         |       | 
+-----------+---------+------+-----+---------+-------+ 
  
四、生成的SQL 脚本
 
  
/* Formatted on 2007/08/22 17:59 (QP5 v5.50) */ 
CREATE TABLE `address_nn_sx` ( 
  `addressid` int(11) NOT NULL auto_increment, 
  `addressdetail` varchar(255) default NULL, 
  PRIMARY KEY  (`addressid`) 
) ENGINE=InnoDB DEFAULT CHARSET=gbk; 
  
/* Formatted on 2007/08/22 17:59 (QP5 v5.50) */ 
CREATE TABLE `person_nn_sx` ( 
  `personid` int(11) NOT NULL auto_increment, 
  `name` varchar(255) default NULL, 
  `age` int(11) default NULL, 
  PRIMARY KEY  (`personid`) 
) ENGINE=InnoDB DEFAULT CHARSET=gbk; 
  
/* Formatted on 2007/08/22 17:59 (QP5 v5.50) */ 
CREATE TABLE `join_nn_sx` ( 
  `addressid` int(11) NOT NULL, 
  `personid` int(11) NOT NULL, 
  PRIMARY KEY  (`personid`,`addressid`), 
  KEY `FK6EBBC5EF6C600921` (`personid`), 
  KEY `FK6EBBC5EF2A92FF3D` (`addressid`), 
  CONSTRAINT `FK6EBBC5EF2A92FF3D` FOREIGN KEY (`addressid`) REFERENCES `address_nn_sx` (`addressid`), 
  CONSTRAINT `FK6EBBC5EF6C600921` FOREIGN KEY (`personid`) REFERENCES `person_nn_sx` (`personid`) 
) ENGINE=InnoDB DEFAULT CHARSET=gbk; 
  
五、映射方法
 
  
<hibernate-mapping> 
    <class name="com.lavasoft.sx._n_n.Personnn_sx" table="PERSON_nn_sx"> 
        <id name="personid"> 
            <generator class="identity"/> 
        </id> 
        <property name="name"/> 
        <property name="age"/> 
        <!-- 映射集合属性,关联到持久化类--> 
         <!--table="join_1ntab_sx" 指定了连接表的名字--> 
        <set name="addresses" 
             table="join_nn_sx" 
             cascade="all"> 
            <!--column="personid" 指定连接表中关联当前实体类的列名--> 
            <key column="personid" not-null="true"/> 
            <!--column="addressid" 是连接表中关联本实体的外键--> 
            <many-to-many column="addressid" 
                          class="com.lavasoft.sx._n_n.Addressnn_sx"/> 
        </set> 
    </class> 
</hibernate-mapping> 
  
<hibernate-mapping> 
    <class name="com.lavasoft.sx._n_n.Addressnn_sx" 
           table="ADDRESS_nn_sx"> 
        <id name="addressid"> 
            <generator class="identity"/> 
        </id> 
        <property name="addressdetail"/> 
         <!--table="join_nn_sx" 是双向多对多的连接表--> 
        <set name="persons" 
             inverse="true" 
             table="join_nn_sx"> 
            <!--column="addressid" 是连接表中关联本实体的外键--> 
            <key column="addressid"/> 
            <many-to-many column="personid" 
                          class="com.lavasoft.sx._n_n.Personnn_sx"/> 
        </set> 
    </class> 
</hibernate-mapping> 
  
六、测试方法 
  
public class Test_nn_sx { 
    public static void main(String[] args){ 
        Addressnn_sx add1=new Addressnn_sx(); 
        Addressnn_sx add2=new Addressnn_sx(); 
        Personnn_sx p1=new Personnn_sx(); 
        Personnn_sx p2=new Personnn_sx(); 
  
        add1.setAddressdetail(" 郑州市经三路"); 
        add2.setAddressdetail(" 合肥市宿州路"); 
        p1.setName("wang"); 
        p1.setAge(30); 
        p2.setName("zhang"); 
        p2.setAge(22); 
  
        p1.getAddresses().add(add1); 
        p1.getAddresses().add(add2); 
        p2.getAddresses().add(add2); 
        add1.getPersons().add(p1); 
        add2.getPersons().add(p1); 
        add2.getPersons().add(p2); 
  
  
        Session session= HibernateUtil.getCurrentSession(); 
        Transaction tx=session.beginTransaction(); 
        session.save(p1); 
        session.save(p2); 
//        session.saveOrUpdate(add1); 
//        session.saveOrUpdate(add2); 
        tx.commit(); 
        HibernateUtil.closeSession(); 
    } 
} 
  
七、测试结果 
  
1) : 正常保存. 
        session.save(p1); 
        session.save(p2); 
//        session.saveOrUpdate(add1); 
//        session.saveOrUpdate(add2); 
  
  Hibernate: insert into PERSON_nn_sx (name, age) values (?, ? ) 
  Hibernate: insert into ADDRESS_nn_sx (addressdetail) values (?) 
  Hibernate: insert into ADDRESS_nn_sx (addressdetail) values (?) 
  Hibernate: insert into PERSON_nn_sx (name, age) values (?, ? ) 
  Hibernate: insert into join_nn_sx (personid, addressid) values (?, ? ) 
  Hibernate: insert into join_nn_sx (personid, addressid) values (?, ? ) 
  Hibernate: insert into join_nn_sx (personid, addressid) values (?, ? ) 

 
本文出自 “熔 岩” 博客,转载请与作者联系!


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/songmin3121/archive/2009/05/25/4214691.aspx

HSM 网络安全 信息安全 HSM HSM信息安全功能 汽车电子网络安全中HSM 的应用场景 选择适合汽车电子网络安全的 HSM 符合汽车安全标准和法规要求的HSM HSM 在汽车电子网络安全中的可靠性和安全性 评估汽车电子网络的安全性 汽车 HSM(Hardware Security Module)模块开发 汽车 HSM(Hardware Security Module)模块测试 阅读详情

相关推荐

数据中心光模块升级实录:从200G QSFP56到400G QSFP-DD的踩坑指南

本文记录了数据中心从200G QSFP56升级至400G QSFP-DD光模块的完整实战经验。文章深入剖析了升级过程中面临的兼容性、链路预算、布线、散热与功耗管理等核心挑战,并提供了具体的解决方案与排坑指南,为高速网络升级提供了宝贵的实践参考。

butter的博客 478

Hibernate多对多单向关联和双向关联

Hibernate关联关系中相对比较特殊的就是多对多关联,多对多关联与一对一关联和一对多关联不同,多对多关联需要另外一张映射表用于保存多对多映射信息。本例介绍多对多单向关联和双向关联。单向关联 :指具有关联关系的实体对象间的加载与访问关系是单向的。即,只有一个实体对象可以加载和访问对方,但对方是看不到另一方的。双向关联:双向关联是指具有关联关系的实体对象间的加载与访问关系是双向的。即,任何一方均可加载和访问另一方。 一、多对多单向关联 1、首先创建一个数据库,一条SQL语句搞定 create databas

爱踢球的程序猿 667

ROS2理论与实践_宇树机器人Go2开发指南(文字)

本文介绍了Unitree Go2机器人ROS2开发环境的安装与配置流程。主要内容包括:1)从GitHub克隆unitree_ros2仓库;2)安装ROS2 Foxy版本依赖项;3)编译特定版本的CycloneDDS(0.10.2);4)编译unitree_go和unitree_api功能包;5)网络配置,包括设置静态IP和修改环境变量脚本setup.sh以指定网络接口。文章还提供了本地回环测试的替代方案,并建议配置完成后重启电脑。整个流程涉及ROS2环境切换、网络适配和编译安装等多个技术环节。

Li_Dongyi的博客 4203

16. Hibernate 双向多对多关联映射

通过本节课程的学习,你将发现关联对象之间的微妙关系。相信这种关系对你更深入地认识HIbernate有很大的帮助。多对多双向关联映射中哪一方是关系维系者;级联操作与关系维系者。

这是一个web全栈开发的博客,取其精华去其糟粕,争取让大家一看就懂,一学就会,一用就成~ 965

详解MegatronLM序列模型并行训练(Sequence Parallel)

MegatronLM的第三篇论文是2022年出的。在大模型训练过程中显存占用过大往往成为瓶颈,一般会通过recomputation重计算的方式降低显存占用,但会带来额外的计算代价。这篇论文提出了两种方法,分别是和,这两种方法和Tensor并行是可以相结合的,可以有效减少不必要的计算量。下图中绿色部分表示不同模型中需要用于保存activation需要的显存大小,蓝色部分表示不同模型中需要用于保存parameter和optimizer state需要的显存大小。红色线表示A100的显存大小80G。

分享机器学习、深度学习、分布式计算、MLSys相关领域知识 1万+

Win10系统VS2019+Cmake+qhull_8.0.0环境配置

1 qhull 1.1 简要介绍 qhull是一个强大的计算几何库,可以用于计算高维的convex hull, Delaunay triangulation, Voronoi diagram等。 1.2 依赖库 qhull不依赖其他库。 1.3 源码包下载 qhull源码地址:github:https://github.com/qhull/qhull.git 2 Cmake构建项目 2.1 路径 源代码路径:D:/ThirdParty/qhull/qhull_8.0.0构建项目路径:D:/Thi.

wangchenxue的博客 2489

hibernate多对多关联--单双向

前几篇文章分别介绍了一对一、一对多的关联,下面我们来看下多对多的关联。多对多关联也分为单向和双向两种。 单向关联示例 Role类 public class Role { private int id; private String name; private Set functions=new HashSet(); //省略get/set }Function类 public cla

想念的专栏 404

一文吃透 ABAP RESTful Application Programming Model(RAP):从数据建模与行为,到业务服务暴露,再到服务消费

本文介绍了SAP ABAP统一编程模型RAP的核心架构与实践方法,通过构建完整的ZTRAVEL和ZBOOKING业务对象,演示了从数据建模、行为定义到服务暴露的全流程。文章详细说明了RAP三层架构(数据与行为层、服务提供层、服务消费层)的实现方式,包括CDS视图实体定义、行为定义(BDEF)中的事务能力声明、投影与服务绑定等关键步骤。特别强调了ABAP Cloud环境下的开发限制和最佳实践,如使用GUID和late numbering机制,以及如何通过EML语言操作业务对象。最后提供了完整的代码示例,展示了

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 521

Hibernate学习笔记----双向多对多关联

现在演示hibernate的双向的多对多,举个例子吧Category和Item,一个Category有多个Item,一个Item可以对应多个属性,但这个时候我们需要三张表,多出来的一张表存放Category和Item的关联关系 Category.java package cn.limbo.hibernate.manyTomany; import java.util.HashSet; impo

太匆匆 490

恒玄BES调试笔记-BES2500如何Dump Anc Audio数据

从YP的4M flash改HP3的2M flash只需要改: 原工程:target.mk的export FLASH_SIZE ?= 0x200000和common.mk里的KBUILD_CPPFLAGS += -DNEW_IMAGE_FLASH_OFFSET=0x100000 OTA工程:target.mk的NEW_IMAGE_FLASH_OFFSET ?= 0x100000和FLASH_SIZE ?= 0x200000 ...

leezs的博客 1671

【AI智能体】Docker 部署 Coze应用服务实战操作详解

Docker 部署 Coze应用服务实战操作详解

congge 4861

Hibernate关联之 多对多双向关联

Hibernate 多对多双向关联   一、模型介绍   一个人可对应多个地址,一个地址也可以对应多个人。   二、实体(省略getter、setter方法)   public class Personnnboth {     priv

Liucheng417的博客 546

毕设加分项!手把手教你完成基于YOLOv8与PyQt5的多类别目标检测系统——让你的毕设从“完成”到“出色”

从KITTI数据集处理,到YOLOv8模型训练,再到PyQt5界面开发,整个流程其实没有想象中那么难。只要你跟着步骤一步步来,不仅能顺利完成毕设,还能掌握目标检测和GUI开发的核心技能——这些技能在未来的求职、读研中都非常实用。如果过程中遇到问题,别担心!可以去YOLOv8的官方文档、PyQt5论坛找答案,也可以和同学、老师交流。记住,完成毕设的过程也是你技术成长的过程,坚持下去,你会为自己的成果感到自豪。

m0_71589036的博客 178

Hibernate从入门到精通(十一)多对多双向关联映射

上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我们讲解一下七种映射中的最后一种多对多双向关联映射。

慎思审视 4084

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Hibernate多对多双向关联(Annotation配置)

Hibernate多对多双向关联(Annotation配置)   2010-10-21 09:09:29|  分类: hiber_1 |  标签:persistence  importjavax  roles  id  column   |字号 订阅 Role.java package com.many2many.bean; import jav

oyzl68的专栏 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Hibernate之多对多双向关联(比较少用)

(一)基于注解的配置方式:(通过雇主和雇员来解释多对多双向关联) 通过@ManyToMany注解可定义的多对多关联. 同时,你也需要通过注解@JoinTable描述关联表和关联条件. 如果是双向关联,其中一段必须定义为owner,另一端必须定义为inverse(在对关联表进行更新操作时这一端将被忽略): @Entity public class Employer implements

qq30211478的博客 263

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Hibernate多对多双向关联映射

                              Hibernate多对多双向关联映射1、数据库结构       category表:{ categoryId , categoryName }       item表:{ itemId , itemName }       category_item表:{ idCategory , idItem}2、Category.

thinkGhoster的专栏 1850

hibernate注解实现多对多双向外键关联

继上篇hibernate注解实现多对多单向外键关联多对多双向外键关联1、 在单项多对多的基础上,对另一方也加上对象的集合引用并在其get方法上加上@manyToMany2、在上篇说了中间表的名称和字段名称都可以修改但是要注意mappedBy和@JoinTable是互斥的,也就是说,@"关联关系注解"里面写了mappedBy属性,下面就不能再写@JoinTable。否则,Hibernate报异常。1...

Howie_T 1475

Hibernate多对多双向关联

以Student和Course为例,一个学生可以选多门课程,一门课程也可以被多个学生选取; 持久化类Student: package bean; import java.util.Set; public class Student { private long id; private String name;//学生姓名 private Set courses;//该学生选择的课

jialinqiang的专栏 1万+

hibernate多对多双向关联

多对多双向关联 注意映射规则:  &lt;set name="roles" table="t_user_role"&gt;   &lt;key column="userid"/&gt;   &lt;many-to-many class="com.bjsxt.hibernate.Role" column="roleid"/&gt;  &lt;/set&am

shaqiang32 156

Hibernate多对多双向关联的配置

Hibernate的双向多对多关联有两种配置方法:那我们就来看看两种方案是如何配置的。 一、创建以各自类为类型的集合来关联 1.首先我们要在两个实体类(雇员<Emploee>、工程<Project>)中各自给对方添加一个对方的集合 1.1 雇员实体类 package cn.manytomany.one...

weixin_30387799的博客 94

Hibernate关联映射之--双向多对多关联

刚开始学Hibernate,学到映射关联,感觉好多映射关系啊,自己总结一下,想都搞清楚 双向多对多关联需要两端都采用Set集合属性,直接上示例: 首先编写两个持久化类Employee和Project和相应的映射文件 public class Employee { private Integer employee_id; private Set projects = new HashS

boloyz的专栏 748

Hibernate 建立双向多对多关联关系

在实际业务处理中,往往会存在很多复杂的数据关联关系,所以在使用 Hibernate 的时候需要掌握好,如何建立数据关联的不同关系,如单向一对多,单向多对一,单向多对多,双向一对多,双向多对多…….现在记录学习如何在 Hibernate 中建立双向多对多的复杂关联关系: 以书店 BookStore 和书本 Book 为例子,一个书店存放很多不同类型的书,一本书可以在多家书店中存货,这样形成一种双向的

十点半i睡觉 533

Java知识点12 Hibernate多对多双向关联(Annotation+XML实现)

1、Annotation 注解版 1.1、应用场景(Student-Teacher):当学生知道有哪些老师教,老师也知道自己教哪些学生时,可用双向关联 1.2、创建Teacher类和Student类 1 package com.shore.model; 2 3 import java.util.HashSet; 4 import java.util.Set;...

weixin_30273175的博客 235
上一篇: Hibernate 一对多连接表双向关联
下一篇: Hibernate 实体关联关系映射
facepp
博客等级 码龄22年 342粉丝 638原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值