java 一对多关系修改,java – EclipseLink以一对多关系生成重复条...
我正在使用EclipseLink 2.4.1和JPA 2.0.在我的示例中,我有以下类定义:
@Entity
public class Shepard {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@OneToMany(mappedBy = "shepard", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List sheeps;
public void addSheep(Sheep sheep) {
if (sheep != null) {
if (sheeps == null) {
sheeps = new ArrayList<>();
}
if (!sheeps.contains(sheep)) {
sheeps.add(sheep);
}
}
}
}
@Entity
public class Sheep {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name="shepard_id")
private Shepard shepard;
public Sheep(Shepard shepard, String name) {
this.shepard = shepard;
this.name = name;
shepard.addSheep(this);
}
}
现在,当我编写Junit测试并执行以下操作时.注意,Sheep构造函数调用Shepard.addSheep(Sheep)!
EntityManagerFactory emf = Persistence.createEntityManagerFactory("data");
EnttyManager em = emf.createEntityManager();
Shepard shepard = new Shepard();
// I Persist Shepard
em.getTransaction().begin();
em.persist(shepard);
em.getTransaction().commit();
// II Persist Tilda
Sheep tilda = new Sheep(shepard, "Tilda");
em.getTransaction().begin();
em.persist(tilda);
em.getTransaction().commit();
// III Persist Martha via Shepard
Sheep martha = new Sheep(shepard, "Martha");
em.getTransaction().begin();
em.merge(shepard);
em.getTransaction().commit();
然后为Sheep的命名查询,我得到了“Tilda”的重复条目!
当我编码时,这不会发生
em.persist(martha);
相反,作为最后一个实体管理员访问.
分析调试输出,我可以看到在II之后有一个[id = 1]的Shepard对象和一个[id = 1]的Sheep对象.
在III之前和之后,Shepard拥有两个参考绵羊的参考资料,其中Tilda为[id = 1],Martha为[id = null].
在III之后,Shepard持有两个羊的参考,其中[id = 2]为Tilda,[id = 3]为Martha.
从EclipseLink调试输出中,我可以看到III在Sheep表中发出了两个insert语句.
在数据库中最终有三个Sheep条目,其中id为上面列出的.
此外,我收到以下错误:
[EL Warning]: 2013-06-21 09:53:26.631--UnitOfWork(221387686)--Thread(Thread[main,5,main])--Exception [EclipseLink-7251] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.ValidationException
Exception Description: The attribute [id] of class [Sheep] is mapped to a primary key column in the database. Updates are not allowed.
这是EclipseLink的错误吗?或者我做错了什么,这里?
java 一对多关系修改,java – EclipseLink以一对多关系生成重复条...相关推荐
- Java 答疑:为什么修改 Java 环境变量之后 java -version 不变?解决方式汇总
文章目录 前言 一.错误场景预演 1.1.查看本地旧版本 1.2.java -version 不变问题产生 二.检查新安装 JDK 是否配置正确 2.1.下载并解压目标 JDK 2.2.配置 Java ...
- java 修改字节码_使用JBE(Java Bytecode Editor)修改Java字节码
JBE JBE(Java Bytecode Editor)是一个Java字节码编辑工具,而且是开源的,该项目是基于jclasslib ej-technologies(https://github.co ...
- Java 技术篇-IntelliJ IDEA修改java、jdk版本实例演示
需要在两个地方配置一下,一个是 Settings 里的 Java Complier . 另一个是 Project Structure 里的 Project . 位置一: 下面是第一个地方,如图我修改为 ...
- 使用JBE(Java Bytecode Editor)修改Java字节码
JBE JBE(Java Bytecode Editor)是一个Java字节码编辑工具,而且是开源的,该项目是基于jclasslib ej-technologies( https://github.c ...
- java判断有没有修改,java字节码判断对象应用是否被修改
原创 1 背景 在学习并发的时候看到了ConcurrentLinkedQueue队列的源码,刚开始的时候是看网上的帖子,然后就到IDE里边看源码,发现offer()方法在1.7版的时候有过修改. 楼主 ...
- 6、数据库表的关系、Java对象的关系、关联查询(一对多)、延迟加载访问
文章目录 关联查询.多表 数据库表关系 Java对象之间的关系 前提条件 一对多 单向关联 延迟加载 双向关联 延迟加载 延迟加载中传递多个参数 关联查询.多表 数据库表关系 表->约束(主键约 ...
- 001 spring5框架:java类工程,IOC:实体类表示表关系,AOP,JdbcTemplate模板,事务操作,Spring5 框架新功能:日志,为空注解,函数式风格,juint,Webflux
1. Spring5 框架(Spring5 Framework)介绍 1.1 概念 1.Spring 是轻量级的开源的 JavaEE 框架 2.Spring 可以解决企业应用开发的复杂性 3.Spri ...
- java volatile 死锁_Java 多线程:volatile 变量、happens-before 关系及内存一致性
原标题:Java 多线程:volatile 变量.happens-before 关系及内存一致性 来源:ImportNew - paddx 更新 请参考来自 Jean-philippe Bempel ...
- java web源代码_检测Java Web应用程序而无需修改其源代码
java web源代码 与其他系统进行交互时,大多数Java Web应用程序都使用标准Java接口. 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Ser ...
最新文章
- javascript如何判断变量的数据类型
- Introspection
- Ranorex中利用code module对于测试数据的管理
- IE6 PNG 透明的方法
- java定义计算机类并模拟其操作
- GitHub 被微软收购后的 52 天,改版并放弃了 jQuery !
- 大数据分析如何应用在驾驶世界
- 20155301 Exp7 网络欺诈防范
- java二进制的相关知识_java二进制运算基础知识点详解
- --》【日常】程序员常用网站
- html5之Fullscreen全屏API
- scara工业机器人外观_SCARA工业机器人研究现状
- 数理逻辑—24个(16组)重要等值式
- 工作笔记(python给excel加密)
- 波士顿房价预测python决策树_波士顿房价预测 - 最简单入门机器学习 - Jupyter
- Java基础知识点总结(面试版)
- 【C语言编程】 大小写字母互换
- 微信 android 闪退问题怎么解决方法,Android里微信分享时BUG,微信界面闪退
- 京东店铺详情页如何做关联销售?如何给图片加热点链接?
- 服务器拒收的文件cpc,放弃实用新型cpc-实用新型专利服务器拒收的文件如何编辑?...
热门文章
- 2020计算机考研985,2020考研:这几所985一个A+学科快来看看吧
- lansee无法双击进去计算机,局域网搜索LanSee工具,网管员神器
- BBEdit 12.6.1 FIXED 特别版 Mac 强大的文本和HTML编辑器及汉化工具
- 计算机中bcd的中文意思,BCD码
- Spring Boot 3.0.0正式发布,Banner不再支持图片增强可观测性
- 戴口罩的这一年,AI产业如何“重启、重塑、重构”?
- 程序员的10大境界,计算科学的10层楼,比尔盖茨看了会自卑,牛顿看了会落泪!
- c语言字符串字数统计,统计字符数 (C++代码)
- windows系统下载合集
- 转专业菜鸡的秋招总结