在Hibernate单向一对多关联关系中的org.hibernate.StaleStateException 异常。
具体异常如下:
Caused by: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:81)
at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:73)
at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:59)
at org.hibernate.persister.collection.AbstractCollectionPersister.recreate
原因之一:先保存一端的对象,再保存多端的对象。
具体代码如下。
- @Test
- public void testTeamAndMember()
- {
- Team team = new Team();
- team.setId(1);
- team.setName("A队");
- Member member1 = new Member();
- member1.setId(1);
- member1.setName("AA");
- Member member2 = new Member();
- member2.setId(2);
- member2.setName("BB");
- //设定关联关系
- team.getMembers().add(member1);
- team.getMembers().add(member2);
- //在这个单项一对多关联关系中,先保存一端的对象,再保存多端的对象,就会抛出
- //Caused by: org.hibernate.StaleStateException: 的异常。
- testService.saveTeam(team);
- testService.saveMember(member1);
- testService.saveMember(member2);
- }
把以上代码改为,先保存多端的对象,再保存一端的对象就可以避免异常了。
具体代码如下:
- @Test
- public void testTeamAndMember()
- {
- Team team = new Team();
- team.setId(1);
- team.setName("A队");
- Member member1 = new Member();
- member1.setId(1);
- member1.setName("AA");
- Member member2 = new Member();
- member2.setId(2);
- member2.setName("BB");
- //设定关联关系
- team.getMembers().add(member1);
- team.getMembers().add(member2);
- //在这个单项一对多关联关系中,先保存多端的对象,再保存一端的对象,就不会抛出异常。
- testService.saveMember(member1);
- testService.saveMember(member2);
- testService.saveTeam(team);
- }
在Hibernate单向一对多关联关系中的org.hibernate.StaleStateException 异常。的更多相关文章
- Hibernate单向一对多对象关系模型映射
1 hibernate 的对象关系映射 Orm: 类-----表 属性------字段 对象------记录 表:在数据库中存在主外键的关系,反向工厂类是由表生成,在由表生成类的时候,类和类之间存在者 ...
- JPA 单向一对多关联关系
映射单向一对多的关联关系 1.首先在一的一端加入多的一端的实体类集合 2.使用@OneToMany 来映射一对多的关联关系3.使用@JoinColumn 来映射外键列的名称4.可以使用@OneToMa ...
- Hibernate单向“一对多”关联
1. 基于连接表的单向“一对多”关联,应该优先被采用其中指定many-to-many的unique="true",为单向“一对多”,不指定就是单向“多对多” <class n ...
- hibernate 的一对多关联关系映射配置
hibernate 是操作实体类: 表是一对多的关系,当创建这2个实体的时候 在一的一方定义一个多的一方的集合 在多的一方定义一个一的一方的对象 表是多对多的关系,当创建这2个实体的时候 在互相中都有 ...
- Hibernate中一对多关联关系中的级联属性
如果想通过级联属性删除一端的数据和多端的数据要使用 void org.hibernate.Session.delete(Object arg0) 方法. getSession().delete(tea ...
- Hibernate双向一对多、双向多对多关联关系中的映射文件怎么写
这里以一对多关联关系为例.以Country类为一端,Competition类为多端. 一个国家可以有多个赛事,但是一个赛事只能属于一个国家. Country类 public class Country ...
- (十一)Hibernate中的多表操作(1):单向一对多
一.单向一对多() 案例一(用XML文件配置): 一个班级有多个学生,班级可以查看所有学生的信息. ClassBean.java package bean; import java.util.Hash ...
- JPA中实现单向一对多的关联关系
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- [原创]java WEB学习笔记82:Hibernate学习之路---映射 一对多关联关系,配置,CRUD方法测试及注意点
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- Tomcat疑难杂症解决记录
1. startup.bat闪退 cmd中运行startup.bat报错: The JRE_HOME environment variable is not defined correctly Thi ...
- Steamworks and Unity – P2P多人游戏
之前我们讨论过“如何把Steamworks.Net和Unity整合起来”,这是一个很好的开始,现在我们研究深一点,谈一谈Steam中的多人游戏.这不是教程,但是可以指导你在你的游戏中如何使用Steam ...
- 【LDAP】ldap目录服务的命名模型
ldap的命名模型 命名模型规定了在目录中如何组织和表示条目 1. 目录信息树(DIT) 目录信息树有点类似于DNS的结构.每一个条目都有自己的父条目(因为主条目的父条目是top,所以这句话是成立 ...
- [Modelsim] 仿真的基本操作
切换路径,建立库并编译所有源文件之后, 键入命令: vopt +acc topmodulename -o top vsim top 其中topmodulename是顶层模块的名称.
- pycharm激活码------2017.11.之前有效
BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...
- 深入理解JavaScript系列(10):JavaScript核心(晋级高手必读篇)
本篇是ECMA-262-3 in detail系列的一个概述(本人后续会翻译整理这些文章到本系列(第11-19章).每个章节都有一个更详细的内容链接,你可以继续读一下每个章节对应的详细内容链接进行更深 ...
- 【学习笔记】实用类String的基本应用即常用方法
一.String类概述 在Java中,字符串被作为String类型的对象来处理. String类位于java.lang包中,默认情况下会自动导入到所有的程序中. 创建String对象的方法如下: St ...
- gcc工作原理
gcc工作流程 1.预处理 --E 1.宏替换 2.头文件展开 3.注释去掉 4.xxx.c -> xxx.i 2.编译 --S 1.xxx.i -> xxx.s 2.汇编文件 3.汇编 ...
- cocoapods的安装和安装过程中遇到的问题
查看当前的ruby版本,我的版本是ruby 2.0.0p648 小于2.2安装cocoapods时会遇到以下问题 $ ruby -v 查看当前ruby源,默认为 https://rubygems.or ...
- stroke和fill顺序对绘图的影响
用canvas绘制线条和填充,fill()和stroke()调用顺序直接影响绘制的结构 先调用stroke在调用fill,绘制的效果看上去lineWidth只绘制出来一半,还以为是个大问题. < ...