JPA oneToMany 级联更新
oneToMany 使用:
示例:Employee与Phone为例.
1、类定义如下:
package com.vrvwh.wh01.domain; import javax.persistence.*;
import java.util.HashSet;
import java.util.Set; /**
* Created by Administrator on 2015/3/5.
*/
@Entity
public class Employee {
private long id; private String name; private Set<Phone> phones=new HashSet<Phone>(); @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} @Column
public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
/**orphanRemoval=true配置表明删除无关联的数据。级联更新子结果集时此配置最关键
*/
@OneToMany(mappedBy = "employee",cascade = CascadeType.ALL,orphanRemoval = true)
public Set<Phone> getPhones() {
return phones;
} public void setPhones(Set<Phone> phones) {
this.phones = phones;
}
}
package com.vrvwh.wh01.domain; import javax.persistence.*; /**
* Created by Administrator on 2015/3/5.
*/
@Entity(name="Phones")
public class Phone {
@Id
private int phoneId;
private int phoneNumber; @ManyToOne(cascade= CascadeType.ALL)
private Employee employee; public int getPhoneId() {
return phoneId;
}
public void setPhoneId(int phoneId) {
this.phoneId = phoneId;
}
public int getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(int phoneNumber) {
this.phoneNumber = phoneNumber;
}
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
} }
2、更新:
Employee employee=employeeService.query(1);
employee.getPhones().clear();
Phone phone1=new Phone();
phone1.setPhoneNumber(132567);
employee.getPhones().add(phone1);
Phone phone2=new Phone();
phone2.setPhoneNumber(132567);
employee.getPhones().add(phone2);
employeeService.update(employee);
JPA oneToMany 级联更新的更多相关文章
- 记: Spring Data Jpa @OneToMany 级联查询被动触发的问题
I have encountered a bug in using Spring Data Jpa. Specifically,when @OneToMany was used to maintain ...
- jpa @onetomany 级联查询时会有重复数据,去重问题
自己是直接查出来然后利用set去重(自己感觉不是太好,不过能达到目的) List<CampaignDashboardDimensionDo> list = query.getResultL ...
- SQL图形化操作设置级联更新和删除
SQL级联操作设置 对SQL数据库的表,进行级联操作(如级联更新及删除),首先需要设置表的主外键关系,有两种方法: 第一种: 1. 选择你要进行操作的数据库 2. 为你要创建关系的两个 ...
- mysql级联更新
MySQL 各种级联查询后更新(update select). CREATE TABLE `tb1` ( `id` int(11) NOT NULL, `A` varchar(100) defa ...
- 整理sqlserver 级联更新和删除 c#调用存储过程返回值
整理一下级联更新和删除 c#调用返回值 use master go IF exists(select 1 from sysdatabases where name='temp') BEGIN DROP ...
- mysql级联更新的两种方式:触发器更新和外键
1.mysql级联更新有两种方式:触发器更新和外键更新. 2.触发器更新和外键更新的目的都是为了保证数据完整性. 我们通常有这样的需求:删除表Table 1中记录,需要同时删除其它表中与Table 1 ...
- Nhibernate 多对多级联更新
问题是这样的,有两个表:文章(Article)和分类(Lable),这两者之间的关系是多对多关联,如果你用Nhibernate来保存数据的话非常的好操作,新建Article,然后把Lable值赋值给A ...
- oracle系列--级联删除和级联更新
必须声明:此博客转载于Oracle外键级联删除和级联更新http://www.2cto.com/database/201507/417496.html 鉴于此前收藏的精彩博客无料被删除了,很是痛心,所 ...
- Oracle 外键级联更新
Oracle数据库中,外键约束只允许级联删除,不允许级联更新,因此,如果想要实现主表数据更新后,子表外键自动更新,只能取消外键关系,通过前端程序来维护实现完整引用,一个代替的解决方案是使用延迟约束和触 ...
随机推荐
- 使用虚拟机win7系统遇到问题及解决
安装VMware并在其中安装win7专业版系统,这里不再赘述.因为...我就是照着百度来的.哈哈 说说使用中遇到的问题. 本来安装成功后,可以很愉快的运行着.后来莫名奇妙的出现了两个问题:1.虚拟机运 ...
- MYSQL服务器字符集设置
修改默认字符集 vi /etc/my.cnf 在[mysqld]下面加入default-character-set=utf8 在[client]下面加入default-character-set=ut ...
- 几种不同的获取url地址的方法
通过如下的几种方法,您就可以获取访问者访问您的网站的来路,请根据需要选择适合您的方法. 一.C#代码一 string url = Request["referer"]; Respo ...
- tomcat各种问题汇总
1. 让Tomcat支持中文路径名和中文文件名 因为内置get协议中的URL编码都是ISO-8859-1,所以需要我们强制编码,在tomcat/conf/Server.xml中添加URIEncodin ...
- HttpURLConnection 下载文件
String fileUrl = request.getRequestURL().substring(0, request.getRequestURL().indexOf("/rest&qu ...
- flash builder关掉自动编译功能
菜单栏 项目,里面有个自动构建,把√去掉就ok了
- hdu 3999 The order of a Tree (二叉搜索树)
/****************************************************************** 题目: The order of a Tree(hdu 3999 ...
- sql sever 2008修改数据类型
如果是新表,直接在表中修改: 如果不是新表,则须sql语句修改 附sql语句 alter table 表名 alter column 列名 新的数据类型
- picurl
from lxml import etreeimport requestsdef getHtml(html): novelcontent = requests.get(html).content re ...
- Mysql基础2
一.DQL下查询英语分数在 80-90之间的同学.mysql>SELECT * FROM student WHERE english>=80 AND english<=90;或者my ...