`
myoldman
  • 浏览: 84839 次
  • 性别: Icon_minigender_1
  • 来自: 福建福州
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts2与jpa(hibernate实现)整合使用过程中碰到的一个匪夷所思的问题.

阅读更多
1.首先简要介绍一下出现的问题的环境
jdk1.6+strut2.0.11.1+Spring2.5+hibernate3.2.6.ga
使用了SpringOpenEntityManagerInViewFilter作为lazyloading.
2.问题出现的步骤和相关代码
主要问题:在action的某个方法中执行完添加数据的操作(insert)后返回success后跳转到添加页面后莫名其妙的又执行了一个update操作,把我插入数据库的数据给修改了.
代码如下
进入添加页面前的action方法
	public String contractorsaSignup() throws Exception
	{
		if (apparelhrContractor == null) {
			apparelhrContractor = new ApparelhrContractor();
			apparelhrContractor.setContractorTitle("test");
			apparelhrContractor.setContractorDescription("test");
			apparelhrContractor.setRegistrationDate(Globals.getCurrentSqlDate());
			apparelhrContractor.setPostDate(apparelhrContractor.getRegistrationDate());
		}
		return SUCCESS;		
	}

插入数据库数据的action方法
	public String contractorsaCreate() throws Exception {
		if (apparelhrContractor != null) {
			apparelhrContractor.setContractorTitle("");
			apparelhrContractor.setContractorDescription("");
			apparelhrContractorService.addApparelhrContractor(apparelhrContractor);
			String resultMessage = getText("contractorsa.success");
			addActionMessage(resultMessage);
		}
		return SUCCESS;
	}

struts.xml配置
		<action name="*Front" class="contractorAction" method="{1}" >
			<result>/contractorsaSignup.jsp</result>
		</action>

以上两个action方法都跳转到同一个页面contractorsaSignup.jsp
我的本意是想把页面提交上来数据中的ContractorTitle和ContractorDescription字段人为清空.
结果执行完insert操作跳转到contractorsaSignup.jsp页面后又把已经清空额ContractorTitle,ContractorDescription数据给update回去了.
后台的log输出如下
Hibernate: insert into apparelhr_contractor (city, company_brief, company_name, contact_persion, contractor_description, contractor_title, country, email, mobile, post_date, registration_date, service_offered, street, suburb, telephone) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2008-5-9 11:12:49 com.opensymphony.xwork2.interceptor.TimerInterceptor doLog
信息: Executed action [/include/contractorSubMenu!execute] took 16 ms.
2008-5-9 11:12:49 com.opensymphony.xwork2.interceptor.TimerInterceptor doLog
信息: Executed action [//contractorsaCreateFront!contractorsaCreate] took 828 ms.
Hibernate: select apparelhrl0_.link_id as link1_6_, apparelhrl0_.content as content6_, apparelhrl0_.create_date as create3_6_, apparelhrl0_.sequence as sequence6_, apparelhrl0_.title as title6_, apparelhrl0_.url as url6_ from apparelhr_link apparelhrl0_ order by apparelhrl0_.sequence
Hibernate: update apparelhr_contractor set city=?, company_brief=?, company_name=?, contact_persion=?, contractor_description=?, contractor_title=?, country=?, email=?, mobile=?, post_date=?, registration_date=?, service_offered=?, street=?, suburb=?, telephone=? where contractor_id=?

大家可以看到执行完insert回到contractorsaSignup.jsp后又执行了个update语句.
但是如果我把
apparelhrContractor.setContractorTitle("");
apparelhrContractor.setContractorDescription("");
给去掉就不会又update语句出现了.
实在是不知道为什么会出现这种奇怪现象,还请兄弟们给指点指点.
分享到:
评论
2 楼 yehuijia 2008-12-26  
erereww
1 楼 myoldman 2008-05-09  
找到原因了.
原来是
select apparelhrl0_.link_id as link1_6_, apparelhrl0_.content as content6_, apparelhrl0_.create_date as create3_6_, apparelhrl0_.sequence as sequence6_, apparelhrl0_.title as title6_, apparelhrl0_.url as url6_ from apparelhr_link apparelhrl0_ order by apparelhrl0_.sequence
这个sql查询在作怪.
由于原来的jpa事务没有把数据库检索的事务设置成readonly导致在查询的以上数据的时候启用了事务处理,hibernate执行了接下来得update操作.

但是一个搞不懂的地方就是,就算我查询用了事务,但是我在插入数据库数据前就已经
执行了如下代码
apparelhrContractor.setContractorTitle("");   
apparelhrContractor.setContractorDescription("");  

为何hibernate还要把我已经插入数据库得数据给update回页面提交上来的原始数据.

真的很费解啊.

相关推荐

    Struts2+JPA+Spring整合(PPT)

    **Struts2、JPA与Spring的整合** 在企业级Java开发中,Struts2、JPA(Java Persistence API)和Spring框架的整合是常见的技术栈选择,它们各自扮演着不同的角色,共同构建出强大的MVC(Model-View-Controller)架构...

    Struts2整合Spring、JPA

    Struts2整合Spring和JPA是企业级Java应用开发中常见的技术组合,它们分别负责不同的职责:Struts2作为一款成熟的MVC框架,主要用于处理Web层的请求与响应;Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和...

    spring mvc 与JPA/Hibernate的整合示例

    总之,这个示例将指导开发者如何将Spring MVC、JPA和Hibernate整合到同一个项目中,实现一个功能完善的Web应用,同时提供了一种组织和管理代码的方式。通过理解这些组件的协同工作,开发者可以更好地掌握Java Web...

    struts2.1.8+JPA3.0(hibernate实现)+spring2.5整合jar

    这些库的整合使得开发者能够在同一个项目中灵活地使用Struts2处理请求,Spring管理对象和事务,Hibernate进行ORM操作,同时利用FreeMarker生成视图,实现MVC架构。通过这样的组合,可以构建出高效、可维护的中型或...

    Struts2+Spring+JPA(Hibernate)的jar包

    Struts2、Spring和JPA(Hibernate)是Java Web开发中的三大核心框架,它们共同构建了一个强大、灵活且可扩展的后端系统。这个压缩包包含的jar文件是这三个框架协同工作所需的基础库。 首先,Struts2是一个基于MVC...

    Struts+Spring+Jpa(hibernate)整合

    在整合中,我们使用Hibernate作为JPA的实现,通过persistence.xml配置持久化单元,定义实体类和数据源。Spring可以帮助我们自动创建SessionFactory,并且通过SessionFactory来实例化Session,进行CRUD操作。 在提供...

    struts2+spring+hibernate 整合的jar包

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们的整合(SSH)极大地提升了开发效率和项目的可维护性。下面将详细讲解这三大框架的核心功能以及整合过程中的关键知识点。 1. **Struts2**:Struts2是一...

    struts2spring5hibernate5整合包

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责:Struts2主要用于MVC(Model-View-Controller)架构的实现,Spring提供了依赖注入和AOP(面向切面编程)等功能,而Hibernate则是一...

    Spring+Struts2+JPA

    **Spring+Struts2+JPA 整合详解** 在Java Web开发中,Spring、Struts2和JPA是三个非常重要的框架。Spring作为一个全面的轻量级框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;Struts2是一个强大的MVC框架...

    Struts2,spring2.5与jpa的整合示例

    在Struts2、Spring2.5和JPA的整合示例中,领域对象的权限管理是一个重要的部分。这通常涉及到基于角色的访问控制(RBAC)。Spring Security(以前称为Acegi Security)是一个强大的安全框架,可以与Spring2.5无缝...

    Struts2 Spring Jpa 配置测试

    在"Struts2 Spring Jpa 配置测试"项目中,开发者可能进行了以下步骤来整合这三个框架: 1. **Struts2配置**:首先,需要在项目的`web.xml`文件中配置Struts2的核心过滤器`org.apache.struts2.dispatcher.ng.filter....

    springmvc4+hibernate4 jpa实现整合(含jar包)

    通过参考和引用传智播客的免费教程,将springmvc4.1.6与hibernate4.3.10提供的JPA实现整合,使用mysql5.6.25,在MyEclipse2014中测试通过。可以作为web开发的基础框架使用。 使用说明: 1.需要安装mysql,并创建名为...

    struts2-hibernate3-spring整合需要的全部jar包

    Struts2、Hibernate3和Spring是Java开发中常用的三大框架,它们各自负责不同的职责:Struts2用于控制应用程序的流程,Hibernate3则是优秀的对象关系映射(ORM)框架,Spring则提供全面的依赖注入(DI)和面向切面...

    struts2 jpa project

    Struts2是一个流行的Java web应用程序框架,用于构建和...对于想要学习如何在实际项目中整合Struts2和JPA的开发者来说,这是一个非常有价值的参考资料。通过深入研究和实践,可以提升对这两项技术的理解和应用能力。

    struts2+HIbernate+Spring整合所需jar包

    在这个整合过程中,jar包的正确配置是关键。 首先,`Struts2`是MVC(Model-View-Controller)框架,负责处理用户请求,提供视图展示,并与业务逻辑层进行交互。Struts2的核心jar包包括`struts2-core.jar`,它包含了...

    Struts 2+Hibernate+Spring整合开发技术详解 12~17章

    - **Spring与Hibernate整合**:配置Spring的数据源、SessionFactory,使用Spring的HibernateTemplate或JPA实现数据访问。 - **整体架构**:理解三层架构(表现层、业务逻辑层、数据访问层)在整合后的组织方式,...

    Struts2+Spring4+Hibernate5 整合JAR包

    Struts2、Spring4和Hibernate5是Java Web开发中的三个核心框架,它们分别负责MVC模式中的表现层、业务层和服务层。这三个框架的整合,通常被称为SSH整合,能够实现高效、灵活且松耦合的Web应用开发。下面将详细阐述...

    Struts2+Hibernate+Spring整合开发深入剖析与范例应用04

    在这个"Struts2+Hibernate+Spring整合开发深入剖析与范例应用04"的主题中,我们将探讨这三大框架的集成过程、关键概念以及实际应用。 首先,Struts2是基于MVC(Model-View-Controller)设计模式的Web框架,它负责...

    struts2+hibernate+spring框架整合实列

    5. **整合Struts2和Spring**:使用Spring的Struts2插件,这样Struts2的动作类可以从Spring容器中获取bean,实现依赖注入。在struts.xml配置文件中,通过`&lt;plug-in&gt;`标签引入Spring插件。 6. **动作类和业务逻辑**:...

Global site tag (gtag.js) - Google Analytics