`
kukuqiu001
  • 浏览: 210352 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

spring2.0+hibernate3.1+struts1.2 ssh开发的简单的应用3

阅读更多
编写这个小应用时出现的问题,以及解决的办法
1.
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
java.lang.NullPointerException   org.hibernate.tuple.AbstractEntityTuplizer.createProxy
原因:没有设置缓存的情况下,
只可使用getHibernateTemplate().get(user.class,id)的方法,而使用load()方法则只对缓存进行操作
原理:
Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:
如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。
load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。

hibernate中session.get/load方法都能通过指定实体类名和id从数据库中读取指定的记录,并且

返回与之对映的实体对象。但是它们也有很大的区别

(1)当记录不存在时候,get方法返回null,load方法产生异常

(2)load方法可以返回实体的代理类,get方法则返回真是的实体类

(3)load方法可以充分利用hibernate的内部缓存和二级缓存中的现有数据,而get方法仅仅在内部缓存中进行数据查找,如果没有发现数据則将越过二级缓存,直接调用SQL查询数据库。
(4) 也许别人把数据库中的数据修改了,load如何在缓存中找到了数据,则不会再访问数据库,而get则会返回最新数据。
解决办法来自
http://matrix.org.cn/resource/news/Hibernate_974c4ed1-a759-11db-8440-755941c7293d.html
2
关于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映射一对多,多对一,多对多的时候新增常常会出现这个异常,代码如下:
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
分享到:
评论

相关推荐

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第二部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3 SSH

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第一部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3内个框架的集成

    struts1.2+spring2.0+hibernate3.1jar包

    Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,它们在2000年代中期至后期广泛应用于构建基于Java的Web应用程序。这个组合通常被称为“SSH”三位一体,各自负责不同的职责: 1. **Struts1.2**...

    Struts2.1.6+Struts2.0+Hibernate3.1整合示例

    开发环境:Windows XP sp3、SQL Server 2005、JDK 1.6、Struts2.1.6、Spring 2.0、Hibernate3.1、MyEclipse 5.5、Tomcat 6.0 使用步骤: 1、下载解压之后,使用IDE导入工程 2、把工程中的“演示数据脚本.sql”导入到...

    struts1.2+spring2.0+hibernate3.1集成开发详解

    ### Struts 1.2 + Spring 2.0 + Hibernate 3.1 集成开发详解 #### 1. 引言 随着Java Web应用的发展,越来越多的企业级项目选择了Struts、Spring与Hibernate(简称SSH)这三种框架进行集成开发。本篇文章将通过...

    struts1.2+spring2.0+hibernate3.1框架所需jar包

    在这个“struts1.2+spring2.0+hibernate3.1框架所需jar包”压缩包中,包含了这三个框架的核心库和其他必要的依赖,以便于开发者在项目中集成和使用。 **Struts 1.2** 是一个基于MVC设计模式的Java Web框架,它使得...

    struts1.2+spring2.0+hibernate3.1实例

    Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,被称为SSH(Struts-Spring-Hibernate)集成框架。这个小实例为学习者提供了使用这三个框架协同工作的基础示例,有助于理解它们如何在实际项目中...

    Struts2.0+Spring2.0+Hibernate3.1整合

    ### Struts2.0+Spring2.0+Hibernate3.1 整合知识点详解 #### 一、项目背景与概述 随着企业应用的发展,越来越多的系统需要具备强大的业务逻辑处理能力以及灵活的数据持久化功能。Struts2作为MVC框架之一,Spring...

    struts1.2+spring2.0+hibernate3.1框架整合实例

    采用在web.xml中加载spring配置文件的方法降低struts和spring的耦合度,使用自定义的MyDelegatingRequestProcessor类来代替spring的DelegatingRequestProcessor类来解决spring中action的bean的重复配置问题。...

    ssh(struts2+spring2.0+hibernate3.1)上传下载例子

    SSH(Struts2 + Spring2.0 + Hibernate3.1)是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用。这个上传下载例子是基于SSH框架实现的一个功能模块,它展示了如何在Web应用中处理文件的上传和...

    struts2.0+spring2.0+hibernate3.1

    Struts2.0、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,通常被称为SSH(Struts2、Spring、Hibernate)架构。这个仓库管理系统是基于SSH搭建的,展示了如何在实际项目中整合这三个框架进行数据管理。 ...

    Struts1.3+2.0+Hibernate3.1+Spring3.1全套API及教程

    内含Struts1.3 API、Struts2.0 API、Struts1.3标签、Hibernate3.1教程、Hibernate3.1API、Spring3.0 API、Spring3.1API。SSH应有尽有,API均是CHM格式,方便使用。教程为pdf格式。

    struts2.0+hibernate3.1+spring2.0实例源码

    Struts2、Hibernate3.1和Spring2.0是经典的Java Web开发框架组合,被称为SSH。这个实例源码集合提供了一个完整的项目示例,旨在帮助初学者理解和掌握这三大框架的整合应用。以下是对这三个框架及其整合的详细介绍: ...

    Struts2.0+Hibernate3.1+Spring2.0 全套API和教程

    Struts2.0、Hibernate3.1和Spring2.0是Java Web开发中经典的三大框架,它们共同构建了所谓的SSH(Struts2、Spring、Hibernate)集成开发环境,为开发者提供了强大的模型-视图-控制器(MVC)架构支持。这个压缩包包含...

    SSH整合实例教程Struts1.2 + hibernate3.1 + spring2.0

    eclipse整合Struts1.2 + hibernate3.1 + spring2.0 相关链接:http://blog.csdn.net/shellwin/archive/2010/07/02/5708865.aspx

    SSH框架包,spring2.0+struts2+hibernate3.1

    SSH框架是Java开发中常用的三大框架集合,包括Spring、Struts和Hibernate,它们协同工作以构建高效、可维护的企业级应用程序。在这个特定的压缩包中,我们拥有Spring 2.0、Struts 2和Hibernate 3.1的版本,以及JDBC...

    远程教育系统(Struts1.2+Hibernate3.1+Spring2.0+Tomcat5.0+SqlServer2005)

    远程教育系统是一个基于Java技术栈的在线学习平台,利用了Struts1.2、Hibernate3.1、Spring2.0和Tomcat5.0等组件,搭配SqlServer2005数据库,构建了一个功能完善的系统。这里我们将深入探讨这些技术及其在远程教育...

    SSH整合jar包(eclipse3.2 + myeclipse5.5 + Struts1.2 + Hibernate3.1 + Spring2.0测试通过)

    很多人在做SSH整合的时候会出现各种异常,其实一看异常类型根本就不是自己书写的代码出了问题,而是MyEclipse所提供的jar包有问题,很容易...Hibernate3.1 + Spring2.0测试通过的,若出现jar包冲突的朋友可以下载下来使用!

    Struts1.2+Spring1.2+HIbernate3.1整合示例代码

    Struts1.2、Spring1.2和Hibernate3.1是经典的Java企业级开发框架组合,通常被称为SSH(Struts + Spring + Hibernate)集成。这个整合示例代码提供了一个全面的学习资源,帮助开发者理解如何将这三个强大的框架有效地...

    SSH资源环境搭建Struts2+Spring2+Hibernate3.1

    SSH资源环境搭建,ssh开发配置教程,以供参考; 开发环境:MyEclipse6.0+Tomcat5.0+SQLServer2000 配置环境:Struts2+Spring2+Hibernate3.1

Global site tag (gtag.js) - Google Analytics