多对多关联关系处理(王添乐)

自学数据库 E-R 图 E-R 图一.简介E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界概念结构模型的有效方法。是表示概念模型的一种方式,用矩形表示实体型,矩形框内写明实体名;用椭圆表示实体的属性,并用无向边将其与相应的实体型连接起来;用菱形表示实体型之间的联系,在菱形框内写明联系名,并用无向边分别与有关 阅读详情

1.user与task的关系是多对多的关联关系,那么我们建立第三张表user_task来表示这个多对多的关系。

2.在User.hbm.xml文件中写语句:

      <set name="tasks" table="user_task" cascade="save-update" inverse="true">
        <key column="user_id"></key>
        <many-to-many column="task_id" class="com.innov8tion.pml.task.domain.Task"></many-to-many>
    </set>

3.在Task.hbm.xml文件中写语句:

    <set name="assignees" table="user_task" cascade="save-update" lazy="false">
        <key column="task_id"></key>
        <many-to-many column="user_id" class="com.innov8tion.pml.user.domain.User"></many-to-many>
    </set>

4.这样,我在taskServiceImpl类中就可以写个如下方法来设置user与task之间的关系:

    public Task updateTask(Task task, Integer[] assignees){
     Task oldTask = getTaskById(task.getTaskId());
     
     //set user_task relationship
     oldTask.getAssignees().clear();                                   (1)
     if(assignees != null && assignees.length > 0){
      for(Integer userId : assignees){
       User user = userDao.getUserById(userId);
       oldTask.getAssignees().add(user);                             (2)
      }
     }
     
     Date now = new Date();
     oldTask.setProject(task.getProject());
     oldTask.setUpdateTime(now);
     oldTask.setPlanTime(task.getPlanHours(), task.getPlanMinutes());
     oldTask.setActualTime(task.getActualHours(), task.getActualMinutes());
     oldTask.setStartTime(task.getStartTime());
     oldTask.setFinishTime(task.getFinishTime());
     oldTask.setTitle(task.getTitle());
     oldTask.setDescription(task.getDescription());
     
        return this.taskDao.updateTask(oldTask); 
    }

 

    注:

    1.在Task类中定义了一个包含User类的列表,定义如下:

     private Set assignees = new HashSet();

    2.我们在userServiceImpl中,首先获取task,此时task与Session关联了,我们对task中的assignees 集合做任何操作,都会相应的反映到数据库的表user_task中。

    3.在上面(1)中的意思是清除user_task中的关于oldTask中的所有记录。如果要移除指定的记录可以使用:
        oldTask.getAssignees().remove(Object)语句。
    4.在上面(2)中的意思是在user_task中添加一条oldTask与user的记录。此时,因为user是与数据库表User相
联系的,所以,不会插入相应的记录到User表中,尽管在Task.hbm.xml文件中设置了cascade="save-update"。
当然,如果user记录与数据库User表没有关系,即不设置user对象userId属性(主键),而是设置user的其他属性,比如姓名和年龄等字段,那么在(2)中执行时,还会插入一条user的记录到User表中。

    

 

PyCharm+QT Designer整合 CMD下使用pip安装PyQt4或者PYQT5 这里要注意,你下载的PYQT5不包含QT designer 还要:pip3 install PyQt5-tools,好像Pyqt5中将designer分离了或者查看源码:https://github.com/altendky/pyqt5-tools,编译安装 将QT Designer整合到PyCharm的External Tools中,以后就可... 阅读详情

相关推荐

波分复用-Zblock仿真

Z-BLOCK是一种用于光通信模块的光学元件,其核心结构是在玻璃块一侧贴有4个特定波长滤光片,另一侧镀有反射膜和增透膜。光信号在内部呈现Z字形反射路径,实现波长分离。文章以可见光LED为例,在ZEMAX中演示了非序列模式下的建模过程,重点介绍了滤光片和膜层的参数设置方法。需要注意的是,入射角度需根据玻璃折射率、通道高度和厚度精确计算,否则可能导致光泄漏。该建模方法同样适用于光通信中的光纤激光器系统。

Zhaxibamao的博客 1746

数据库实体间多对多关系处理

 数据库实体间多对多关系处理   数据库实体间有三种对应关系:一对一,一对多,多对多。 一对一关系示例:一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。 一对多关系示例:一个学生只属于一个班,但是一个学院有多名学生。 多对多关系示例:一个学生可以选择多门课,一门课也有多名学生。   这三种关系在数据库中逻辑结构处理分析:   1.一对多关系处理: 我们以学生和班级...

iteye_1907的博客 2922

【魔兽世界插件】魔兽世界插件实战笔记从入门到放弃的心理历程 第一节 lua框架的建立

魔兽世界插件实战笔记从入门到放弃的心理历程 第二节 lua框架的建立 找到魔兽世界的安装目录,找到插件的默认位置:\World of Warcraft\_retail_\Interface\AddOns,在这里建立一个文件夹,魔兽的插件都是用一个文件夹来区分的,第一课吗,就用Lesson_one吧。 下面建立的三个文件,第一个点toc文件是最重要的一个,它是魔兽客户端识别插件的一个标识符。 魔兽版本号有一个函数可以查询在WoWLua下面运行:print("当前游戏版本号:",(select(4,GetBui

qq_33075391的博客 6450

多对多关系的处理办法

多对多关系的处理在数据库设计的过程中,经常会遇到两张表是多对多的关系. 如订单和商品之间的关系:一个订单包含了很多商品,而一种商品同时也可能属于多个订单. 这时就需要通过建立一个第三方关联表,将多对多关系拆分成两个一对多关系.其中关联表为多方.实例如下:背景 一种菜品属于一个菜系,一个菜系也包括很多菜品; 一种菜品根据原材料分可以分为多个种类,如番茄炒蛋可以归为蛋类也可归为蔬菜类,而每个种类下也

天啦的呜啦啦的博客 3168

STM32-printf重定向串口输出

声明 本文内容转载至https://www.mculover666.cn/posts/2251182441/ 1.printf与fputc printf 定义在 <stdio.h> 头文件中,如下: int printf(const char *format, ...); printf 函数根据 format 字符串给出的格式打印输出到 stdout(标准输出)中,当然,printf 函数是不会一个字符一个字符去输出,它会调用更底层的 I/O 函数:fputc去逐个字符打印。 fputc 也定

qq_41215167的博客 4539

Jetson Orin Nano GPIO 实战,用 devmem 玩转 Pinmux 引脚复用配置

devmem 是一个直接读写寄存器的工具,通过 mmap 将 /dev/mem 中的物理地址区域映射到用户空间进程地址空间,从而实现直接读写,正常情况下在 /dev 下可以看到 mem。可以看到对应 bit5 bit6 分别为 1,对应配置为 E_IO_HV 为 ENABLE 以及 E_INPUT 为 ENABLE。需要 TRM 手册查看相关寄存器,以及安装 busybox,busybox 内置了 devmem。根据 TRM 手册,找到 I2C_SDA 的 pinmux 地址偏移是 0x18。

darcsdn 1643

类集的多对多关系

例如:一个学生可以选择多个学科,多个学科又可以被不同的学生选学 代码1-----学科类 import java.util.List ; import java.util.ArrayList ; public class Course{ private String name ; private int credit ; private List<St...

weixin_34406061的博客 120

SAP批量程序(一)-静态批量EX,FX和期间批量MB,WB和TB

SAP批量程序(一)-静态批量和区间批量

weixin_38974136的博客 5478

四、对于多对多关系的对象,如何建表

(一)背景介绍   在数据库中建表时,很容易遇到一种情况:一个学生选修了多门课,而每门课有多名学生选修,“学生”和“课程”之间就是典型的多对多关系。 (二)如何建表   遇到这种多对多关系,我们一般是创建三张表:Student(学生表)、Course(课程表)和选课表(id、student_id、course_id)...

panchang199266的博客 6779

Silvaco Atlas新手入门:从安装到第一个半导体器件仿真(附DeckBuild配置)

本文为Silvaco Atlas新手提供了一份从软件安装、DeckBuild环境配置到完成第一个半导体器件仿真的实战指南。通过构建一个经典的PN结二极管案例,详细讲解了Atlas仿真语句的语法、核心命令顺序以及结果调试与可视化方法,帮助初学者快速上手并理解TCAD仿真流程。

sql99的博客 332

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力

【YOLOv8改进-注意力机制】LSKNet(Large Selective Kernel Network ):空间选择注意力 (论文笔记+引入代码)。LSKNet能够动态调整其大的空间接收场,以更好地模拟遥感场景中各种对象的范围上下文。据我们所知,这是首次在遥感目标检测领域探索大型和选择性核机制。

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 2864

数据库表设计

做一个项目,必然是少不了数据库设计的!在学习阶段,基本都是单表。然而在实际开发过程中,一对多,多对多的表处处都是!简单整理一下,一对多,多对多表如何设计整理一下思路:一对一,一对多,多对多。设计数据库表:只需在中多添加一个班级号的ID;注:所以对于多对多表,通过关系表就建立起了两张表的联系!多对多表时建立主外键后,要先删除约束表内容再删除主表内容。

T_alon的博客 6854

Qualcomm 常用NV列表

^ NV ITEM ^ 功能^^ |NV10 |mode prefer,找网模式|新平台使用NV80000| ^NV74 NV74=0关闭自动接听电话^ |NV240 |NV240=FALSE|EVDO出现网络的问题,此项必须设定为FALSE| |NV255 |CDMA规避网络列表(SID/NID号)| |NV256 |

sdrgtywretyeruet的专栏 5768

数据库设计多对多关系的几种形态(7种)。

 数据库设计多对多关系的几种形态 前言:多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表(字典表是纪录比较少,而且基本稳定的,例如:版块名称;副表是内容比较多,内容变化的,例如)。 按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者select * from 主表 where id in (select 主表id from 关系表)

superdullwolf的专栏 3466

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

多对多关系的多表关联查询

笔者根据实际的业务和参考网上多对多的处理方法,现在做如下处理,由于笔者技术水平有限,错误之所,在所难免,敬请各位技术大佬批评和指正

liubin5620的博客 5万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

数据库表设计(一对多,多对多)

做一个项目,必然是少不了数据库设计的!在学习阶段,基本都是单表。然而在实际开发过程中,一对多,多对多的表处处都是!简单整理一下,一对多,多对多表如何设计整理一下思路: 数据库实体间有三种对应关系:一对一,一对多,多对多。 一对一关系示例: 一个学生对应一个学生档案材料,或者每个人都有唯一的身份证编号。 ...

weixin_30955341的博客 2307

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

关系字段(多对多)增删改查

多对多 用于表示多对多的关联关系。在数据库中通过第三张表来建立关联关系。 字段: ManyToManyField 字段参数to: 设置要关联的表 注意: 正向查询和反向查询同一对多规则。 例如 一个老师对应多个学生,一个学生对应多个老师 #学生类 class Student(models.Model): name = models.CharField(max_length=32) ...

achieve_success的博客 1713

【转】数据库一对一、一对多、多对多关系

转自:https://blog.youkuaiyun.com/u013144287/article/details/79024130  本来数据库一对一、一对多、多对多关系并不复杂,但是最近在理解的时候感觉又感觉多了写新意,所以现在在来总结一下吧 一、首先给出三种关系的实例 1、一对一关系实例    * 一个人对应一张身份证,一张身份证对应一个人 2、一对多关系实例    * 一个班级拥有多个学生,一个学生...

beidaol的专栏 1万+

一对多关系修改为多对多关系

数据库设计 关系 一对一 多对多

vimanas的博客 1026

Mybatis 一对多关联查询,批量修改

需求:同事给同事帮忙,顺便做个记录。千万不要手动去封装,很累很累。 代码地址: 这里的一对多关联查询是指,在查询一方对象的时候,同时将其所关联的多方对象也都查询出来。 目录结构(springboot+mybatis) 下面以国家 Country 与部长 Minister 间的一对多关系进行演示。 1、pom.xml <parent> <groupId>org.spri...

congcongxianshen的博客 2521

数据库实体之间的关联关系:一对一、一对多、多对多

数据库实体间有三种关联关系:一对一,一对多,多对多。一对一实例:一个学生只有个身份证编号。 一对多实例:一个班级有多个学生。 多对多实例:多对多就是双向一对多,一个学生可以选择多门课,一门课也有多名学生。 1.一对多关系处理:我们以学生和班级之间的关系来说明一对多的关系处理方法。 假设现有基本表学生表(学号,姓名,……),班级表(班级号,备注信息,……)。 方法一:新增一个关系表,用来表示学生与班级

Feike 8万+

hibernate (多对多) 执行update更新操作时,关联表数据会被删除

Hibernate.get(.getClass,id);可以使用先找到这条对象 把值放入对象里面去,再执行update方法

technologys的博客 1926

数据表设计:中间表——多对多关系E-R图转换

设计数据表,遇到一个很常见的情况。一、中间表-多对多关系的转化实际中,经常存在多对多关系。以订单和商品为例,一个订单对应多个商品,一个商品也对应多个订单。此时在将E-R图转化为关系模型时,需要引入中间表(也叫做连接表)。中间表包含两个实体表的主键,建立两张表沟通。中间表也可以有普通字段。例如商品数量,和每种商品总和。注意:要把他们与实体表中字段含义区分开。参考连接:https://zhidao.b...

vainfanfan的博客 7万+

Hibernate框架之多对多关系处理(Demo演示)

在上一篇博客 Hibernate框架之一对多关系处理(Demo演示),演示了hibernate处理一对多关系,在本篇博客将演示hibernate处理多对多关系。请先仔细阅读上一篇博客,一对多关系、多对多关系是相通的。 在数据库学习的过程,多对多的关系也是常见的一种实体关系。可能直接从概念上比较难于描述,举个栗子就很好理解,比如一门课程可被多个学生选上,一个学生也可以选择多门课程,那么学生、课程就是...

hestyle的博客 498
上一篇: eclipse使用(改名)
下一篇: tomcat启动war项目以及pager分页标签使用
wangle100wangle
博客等级 码龄19年 16粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值