`

hibernate 常见的几个问题(三)

阅读更多

关于Hibernate的 Batch update returned unexpected row count from update异常
ERROR [http-8080-Processor22] (BatchingBatcher.java:60) - Exception executing batch:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
出现这一错误的主要原因有两个
(1)使用的是hibernate的saveOrUpdate方法保存实例。saveOrUpdate方法要求ID为null时才执行SAVE,在其它情况下执行UPDATE。在保存实例的时候是新增,但你的ID不为null,所以使用的是UPDATE,但是数据库里没有主键相关的值,所以出现异常。

=================================================================
异常:
在插入时:
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
解决方法:
unsaved-value="null"是否设置
可仔细看
http://www.iteye.com/topic/1604
(2)在Hibernate映射一对多,多对一,多对多的时候新增常常会出现这个异常,代码如下:

Java代码 复制代码
  1. public void saveFunctionCell(FunctionCell functionCell, Integer pid) {    
  2.   System.out.println("现在进行新增操作");    
  3.   FunctionCell fc = new FunctionCell();    
  4.     try {    
  5.    BeanUtils.copyProperties(fc, functionCell);    
  6.   } catch (IllegalAccessException e) {    
  7.    e.printStackTrace();    
  8.   } catch (InvocationTargetException e) {    
  9.    e.printStackTrace();    
  10.   }    
  11.   fc.setFuncCellID(null);    
  12.   // 获得父权限    
  13.   FunctionCell pfc = functionCellDao.findFunctionCellByID(pid);    
  14.   fc.setParentFunctionCell(pfc);    
  15.   functionCellDao.saveFunctionCell(fc);    
  16. }   
public void saveFunctionCell(FunctionCell functionCell, Integer pid) { 
  System.out.println("现在进行新增操作"); 
  FunctionCell fc = new FunctionCell(); 
    try { 
   BeanUtils.copyProperties(fc, functionCell); 
  } catch (IllegalAccessException e) { 
   e.printStackTrace(); 
  } catch (InvocationTargetException e) { 
   e.printStackTrace(); 
  } 
  fc.setFuncCellID(null); 
  // 获得父权限 
  FunctionCell pfc = functionCellDao.findFunctionCellByID(pid); 
  fc.setParentFunctionCell(pfc); 
  functionCellDao.saveFunctionCell(fc); 
} 


关键是beanutils的用法!!!!
注意特别标识出来的这个地方,BeanUtils拷贝Bean属性的时候,它会将你的Integer类型全部设置成0,在这里设置一个空,这样就不会抛出错误了。
这个解决办法来自
http://hain.iteye.com/blog/105744

Java代码 复制代码
  1. update by id    
  2. if(id==0)    
  3.   org.hibernate.StaleStateException:  Batch  update  returned     
  4. unexpected  row count  from  update:  0  actual  row  count:  0  expected:  1    
  5. else    
  6.   success  

分享到:
评论

相关推荐

    Hibernate几个常见错误解决方式

    这个错误表明Hibernate尝试访问的数据库表中不存在名为`isupdate`的列。解决方法是检查Hibernate的映射文件(如.hbm.xml或使用注解的方式),确保实体类中的`isupdate`属性正确地映射到了数据库表的相应列。如果...

    hibernate常见错误解决方案

    ### Hibernate常见错误解决方案 在开发基于Hibernate框架的应用程序时,我们经常会遇到各种各样的异常情况。这些异常不仅会影响系统的正常运行,还可能增加调试难度。本文将针对几个常见的Hibernate异常进行详细...

    常见hibernate面试题.doc

    ### 常见Hibernate面试题知识点详解 #### 1. Hibernate查询数据的方式 - **导航对象图查询**:这是最基本的查询方式之一,适用于查询对象之间的关联关系。通过已知对象来导航到其他对象,比如通过一个`User`对象...

    hibernate+mysql乱码问题

    例如,`set names gbk` 是MySQL中设置客户端、连接和结果集编码为GBK的命令,而GBK是中文的一个常见编码方式。如果你的数据源是UTF-8编码的,但数据库使用GBK,那么在传输过程中可能会出现乱码。 在Hibernate配置...

    Hibernate映射导致的几个异常

    这是Hibernate懒加载机制中的常见异常,当尝试访问一个已被关闭的Session中的懒加载属性时触发。例如,如果Session在使用`setFetchMode(FetchMode.LAZY)`后关闭,而之后又试图访问该Session管理的某个对象的懒加载...

    Hibernate连表查询 Hibernate连表查询

    下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)框架,它允许开发人员将Java对象模型映射到数据库表,并在对象和数据库之间...

    hibernate 的createSQLQuery的几种用法

    下面是 createSQLQuery 的几种常见用法: 一、简单的 SQLQuery 在最简单的情况下,我们可以使用 createSQLQuery 方法来执行一个简单的 SQL 查询,例如: ```java List cats = sess.createSQLQuery("select * from ...

    hibernate基础 入门/ hibernate basic

    **Hibernate架构**是围绕着几个核心组件构建的,这些组件共同协作,为开发者提供了一个强大的持久层解决方案。以下是Hibernate架构的主要组成部分: 1. **SessionFactory**:这是Hibernate框架中最核心的工厂类,它...

    Hibernate知识点总结

    在Hibernate中,对象持久化的具体含义包括以下几个方面: - **保存**:将对象状态存储到数据库中。 - **更新**:更新数据库中对象的状态。 - **删除**:从数据库中移除对象。 - **查询**:根据某些条件从数据库中...

    hibernate search

    - **依赖**:该库依赖于其他几个库文件,例如 Lucene 和 Hibernate Core。 - **用途**:用于实现全文检索功能,如索引创建、查询执行等。 2. **lucene-core.jar**: - **功能**:Lucene 是一个高性能的全文检索...

    Hibernate电子书(全)

    构建第一个Hibernate程序通常包括以下几个步骤:定义实体类,创建映射文件,配置Hibernate,初始化SessionFactory,执行CRUD(创建、读取、更新、删除)操作。通过这个过程,开发者可以熟悉Hibernate的基本工作流程...

    hibernate中文参考文档

    7. 组件映射:当一个类的属性是由其他几个类的属性组合而成时,可以使用组件映射。这部分内容将说明如何实现组件映射,以组合不同的属性到一个复合对象。 8. 继承映射:Hibernate支持不同类型的继承映射策略,包括...

    hibernate_reference使用指南全

    Hibernate 是一个开源的对象关系映射 (ORM) 框架,它为 Java 应用程序提供了一种将 Java 对象映射到关系型数据库表中的机制。本章节将详细介绍如何从零开始创建一个简单的 Hibernate 应用程序。 **1.2 第一个 ...

    J2EE hibernate

    【标签】"Hibernate J2EE Spring 企业应用实战_Struts 整合开发3" 这些标签揭示了几个关键的Java开发技术。Spring框架是一个全面的后端开发框架,涵盖了依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等,...

    hibernate

    根据提供的文件信息,我们可以深入探讨Hibernate框架中的几个关键概念,特别是`fetch`, `lazy`, `cascade`, 和 `inverse`关键字的使用与理解。这四个概念在处理对象关系映射(ORM)时非常重要,尤其是在Java环境下...

    解决Hibernate对于Date类型的数据返回结果中时分秒不对的问题

    在使用Hibernate进行数据库操作时,有时会遇到一个常见的问题,即当从数据库中查询Date类型的数据并由Hibernate返回时,发现结果中的时分秒部分不正确。这个问题通常源于多个因素,包括日期时间的序列化与反序列化...

    Hibernate4.1环境搭建

    在构建现代Web应用程序时,集成Spring框架、Struts2以及Hibernate等技术是非常常见的选择。这些技术的组合通常被称为SSH(Spring + Struts + Hibernate),是一种非常强大的开发模式,能够帮助开发者高效地构建出...

    Hibernate.3.6.10帮助文档

    11. **最佳实践**:分享了在实际开发中使用Hibernate的一些最佳实践和注意事项,帮助开发者避免常见问题。 这个文档是Hibernate开发者的重要参考资料,无论是初学者还是有经验的开发者,都能从中获取到实用的信息和...

    SSH整合hibernate完整jar包

    SSH整合Hibernate时,主要涉及以下几个关键知识点: 1. **Struts**:Struts是基于MVC(Model-View-Controller)设计模式的Java Web框架。它简化了创建用户接口和业务逻辑之间的交互。在SSH整合中,Struts负责接收...

Global site tag (gtag.js) - Google Analytics