我正在使用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以一对多关系生成重复条...相关推荐

  1. Java 答疑:为什么修改 Java 环境变量之后 java -version 不变?解决方式汇总

    文章目录 前言 一.错误场景预演 1.1.查看本地旧版本 1.2.java -version 不变问题产生 二.检查新安装 JDK 是否配置正确 2.1.下载并解压目标 JDK 2.2.配置 Java ...

  2. java 修改字节码_使用JBE(Java Bytecode Editor)修改Java字节码

    JBE JBE(Java Bytecode Editor)是一个Java字节码编辑工具,而且是开源的,该项目是基于jclasslib ej-technologies(https://github.co ...

  3. Java 技术篇-IntelliJ IDEA修改java、jdk版本实例演示

    需要在两个地方配置一下,一个是 Settings 里的 Java Complier . 另一个是 Project Structure 里的 Project . 位置一: 下面是第一个地方,如图我修改为 ...

  4. 使用JBE(Java Bytecode Editor)修改Java字节码

    JBE JBE(Java Bytecode Editor)是一个Java字节码编辑工具,而且是开源的,该项目是基于jclasslib ej-technologies( https://github.c ...

  5. java判断有没有修改,java字节码判断对象应用是否被修改

    原创 1 背景 在学习并发的时候看到了ConcurrentLinkedQueue队列的源码,刚开始的时候是看网上的帖子,然后就到IDE里边看源码,发现offer()方法在1.7版的时候有过修改. 楼主 ...

  6. 6、数据库表的关系、Java对象的关系、关联查询(一对多)、延迟加载访问

    文章目录 关联查询.多表 数据库表关系 Java对象之间的关系 前提条件 一对多 单向关联 延迟加载 双向关联 延迟加载 延迟加载中传递多个参数 关联查询.多表 数据库表关系 表->约束(主键约 ...

  7. 001 spring5框架:java类工程,IOC:实体类表示表关系,AOP,JdbcTemplate模板,事务操作,Spring5 框架新功能:日志,为空注解,函数式风格,juint,Webflux

    1. Spring5 框架(Spring5 Framework)介绍 1.1 概念 1.Spring 是轻量级的开源的 JavaEE 框架 2.Spring 可以解决企业应用开发的复杂性 3.Spri ...

  8. java volatile 死锁_Java 多线程:volatile 变量、happens-before 关系及内存一致性

    原标题:Java 多线程:volatile 变量.happens-before 关系及内存一致性 来源:ImportNew - paddx 更新 请参考来自 Jean-philippe Bempel ...

  9. java web源代码_检测Java Web应用程序而无需修改其源代码

    java web源代码 与其他系统进行交互时,大多数Java Web应用程序都使用标准Java接口. 诸如Web页面或REST服务器之类的基于HTTP的服务是使用接口javax.servlet.Ser ...

最新文章

  1. javascript如何判断变量的数据类型
  2. Introspection
  3. Ranorex中利用code module对于测试数据的管理
  4. IE6 PNG 透明的方法
  5. java定义计算机类并模拟其操作
  6. GitHub 被微软收购后的 52 天,改版并放弃了 jQuery !
  7. 大数据分析如何应用在驾驶世界
  8. 20155301 Exp7 网络欺诈防范
  9. java二进制的相关知识_java二进制运算基础知识点详解
  10. --》【日常】程序员常用网站
  11. html5之Fullscreen全屏API
  12. scara工业机器人外观_SCARA工业机器人研究现状
  13. 数理逻辑—24个(16组)重要等值式
  14. 工作笔记(python给excel加密)
  15. 波士顿房价预测python决策树_波士顿房价预测 - 最简单入门机器学习 - Jupyter
  16. Java基础知识点总结(面试版)
  17. 【C语言编程】 大小写字母互换
  18. 微信 android 闪退问题怎么解决方法,Android里微信分享时BUG,微信界面闪退
  19. 京东店铺详情页如何做关联销售?如何给图片加热点链接?
  20. 服务器拒收的文件cpc,放弃实用新型cpc-实用新型专利服务器拒收的文件如何编辑?...

热门文章

  1. 2020计算机考研985,2020考研:这几所985一个A+学科快来看看吧
  2. lansee无法双击进去计算机,局域网搜索LanSee工具,网管员神器
  3. BBEdit 12.6.1 FIXED 特别版 Mac 强大的文本和HTML编辑器及汉化工具
  4. 计算机中bcd的中文意思,BCD码
  5. Spring Boot 3.0.0正式发布,Banner不再支持图片增强可观测性
  6. 戴口罩的这一年,AI产业如何“重启、重塑、重构”?
  7. 程序员的10大境界,计算科学的10层楼,比尔盖茨看了会自卑,牛顿看了会落泪!
  8. c语言字符串字数统计,统计字符数 (C++代码)
  9. windows系统下载合集
  10. 转专业菜鸡的秋招总结