我用hbiernate annation写的代码,维护多对多关系时,出了个奇怪的问题:
1:Operator.java
@Entity
//@Table(name="operator")
public class Operator implements java.io.Serializable,IfTableModel {
private static final long serialVersionUID = 1L;
public static final String [] column={"编号","姓名","其他信息"};
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Integer id;
@Column(name = "name",unique=true)
private String name;
@Column(name = "msg")
private String msg;
@ManyToOne(targetEntity=base.Role.class)
@JoinColumn(name="RoleId")
private Role role;
@ManyToMany(targetEntity=base.Department.class)
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})
@JoinTable(
name="operator_department ",
joinColumns={@JoinColumn(name="OperatorId")},
inverseJoinColumns={@JoinColumn(name="DepartId")}
)
private List<Department> departs=new ArrayList();
}
2:Department.java
@Entity
@Table(name = "department")
public class Department implements java.io.Serializable,IfTableModel {
private static final long serialVersionUID = 1L;
public static final String Id = "id";
public static final String Name = "name";
public static final String [] column={"编号","部门名称"};
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Integer id;
@Column(name = "name")
private String name;
@ManyToMany(targetEntity=base.Operator.class,mappedBy="departs")
private List<Operator> operators=new ArrayList();
}
关系说明:operator和department是多对多的关系,其中,operator端负责关系的维护
3:对operator和department操作的代码
Transaction tx2= se.beginTransaction();
BaseUtil u=new BaseUtil();
List<Department> departs=u.getDepartments();
List<Operator> opers=u.getOperators();
opers.get(0).getDeparts().add(departs.get(0));
opers.get(0).getDeparts().add(departs.get(1));
tx2.commit();
现在期望的sql代码是:insert into operator_department (OperatorId, DepartId) values (?, ?)
这里出现一个奇怪的问题是,现在总是先
delete from operator_department where OperatorId=?
然后才把所有原来的关系重新插入一遍
insert into operator_department (OperatorId, DepartId) values (?, ?)
insert into operator_department (OperatorId, DepartId) values (?, ?)
insert into operator_department (OperatorId, DepartId) values (?, ?)
这样严重影响性能,各位高人帮忙看看什么原因啊?
奇怪的问题啊!!!
分享到:
相关推荐
针对标题和描述中提到的“系统疑难杂症处理文件”,我们可以理解为这可能是一个专门用于诊断和修复这类问题的工具或程序,例如"疑难杂症处理.exe"。 1. **系统故障诊断**:系统疑难杂症处理的第一步通常是进行诊断...
MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化MongoDB疑难杂症分析及优化...
在电脑使用过程中,我们经常会遇到各种各样的问题,这些问题涵盖了硬件、软件、网络等多个方面。"各类电脑疑难杂症处理"这个主题旨在提供一个全面的解决方案集,帮助用户解决他们在日常使用电脑时遇到的困扰。下面,...
关于MySQL数据库疑难杂症排查,审明:本资源归原作者所有。
MySQL数据库疑难杂症排查 MySQL 数据库是一种关系型数据库管理系统,广泛应用于各种 Web 应用程序中。但是,在实际应用中,我们经常会遇到各种问题,例如数据库打开速度慢、查询效率低、服务器负载高等问题。因此...
4. **并发与多线程**:当处理多个Excel文件时,可以考虑使用多线程或多进程,但需要注意Excel本身并不支持多线程访问,因此需要适当的设计和同步机制。 5. **内存管理**:COM对象在使用完毕后必须正确释放,否则可能...
这份"Java 疑难杂症_笔记.zip"压缩包中的笔记,显然是为了解决这些问题而编写的,旨在帮助Java开发者提高解决问题的能力和效率。让我们详细探讨一下这个主题可能涵盖的一些关键知识点。 首先,笔记可能包含了Java...
通过对“mysql疑难杂症”的深入分析,我们可以看到,在面对MySQL性能问题时,通过一系列的监控工具和方法,能够有效地定位问题所在,并采取相应的解决措施。这对于提高系统的稳定性和响应速度具有重要意义。希望这些...
首先,文档标题《一网打尽sap各类用户疑难杂症》暗示了文档的主旨,是为了解决在使用SAP系统时可能遇到的各类问题。SAP是全球领先的企业资源规划(ERP)软件供应商,其产品被广泛应用于企业资源管理、客户关系管理、...
【电脑疑难杂症在线解答集锦】是一篇针对初级电脑用户的文章,主要涵盖了电脑使用过程中常见的问题和解决方案。这些问题包括: 1. **软盘引发启动错误**:当电脑开机时出现"Non-System disk or disk error replace ...
17个Docker常见疑难杂症解决方案汇总.docx
在电脑使用过程中,有时会遇到各种“疑难杂症”,如病毒感染、系统文件损坏、注册表出错等,这些问题可能导致电脑运行不正常或者功能受限。针对这种情况,开发了一款名为“电脑疑难杂症处理工具”的软件,它是一款...
总结,解决Outlook的疑难杂症需要对软件的各个功能有深入理解。从邮件导出与备份,到账户配置、性能优化,再到日历同步,每个环节都有其独特的解决方案。通过掌握这些技巧,用户可以更好地管理和保护自己的Outlook...
“电脑专家2009”是一个在线即时答疑软件。无论是电脑初学者还是老手,在使用电脑时总会遇到这样那样的问题——我的操作系统怎么出现蓝屏了,我用的好好的软件...你来问,大家来答,电脑使用的各种疑难杂症为您一一化解
clickhouse的疑难杂症
"电脑疑难杂症解决方法"这个资源正是为了帮助用户解决这些头疼的问题而整理的。它涵盖了多种常见的电脑故障及其解决方案,旨在提供一个详尽的指南,帮助用户在遇到问题时能够迅速找到解决之道。 1. **系统启动问题*...
《RoseHA for Windows疑难杂症问题及解决办法》 RoseHA for Windows是一款针对Windows操作系统的高可用性解决方案,旨在确保关键业务服务的连续运行。在使用RoseHA时,可能会遇到各种问题,本文档将深入探讨这些...
根据给定文件的信息,本文将围绕部署Windows 8操作系统及其过程中可能遇到的疑难杂症问题进行深入探讨。本文旨在提供一份详细的指南,帮助初学者更好地理解操作系统部署的过程,并学会处理在这一过程中可能出现的...