`
aswang
  • 浏览: 850001 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

在struts2框架下保存对象:object references an unsaved transient instance异常解决办法

    博客分类:
  • java
 
阅读更多

在struts2中,保存某个对象a,而这个对象中又包含其它对象b(外键关联),这个时候,如果b为空值,保存的时候就会报错:object references an unsaved transient instance...

 

记得这个问题之前遇到过好多次,但是解决办法始终没记下来,今天又遇到这个错误,现将解决办法记录如下:

 

很多时候,我们在页面中会这样定义一个表单元素:

<input type="hidden" name="a.b.id" value=""/>

 

如果value为空,那么我们期望在保存的时候,将a的属性b设置为null,不管是我们手动设置b为null,还是默认操作,都会报错。错误的原因是:虽然我们手动设置a.b为null,但是在我们提交表单到action的时候,struts2的框架仍然会为我们初始化一个b对象,即a.b这个对象不为null,但是b对象里面的所有属性都是null,也包括id,那么在我们保存的时候,hibernate会探测到有一个瞬时对象没有保存,所以就会报错。

 

之前尝试过将数据库中的外键约束去掉,但是仍然不行,后来在网上搜索了很多办法,貌似都不能解决。

 

最后,将页面中的表单元素改写如下:

<input type="hidden" name="bId" value=""/>

其实,我们希望得到的是b的id值,那么我们可以简单的在strus2的action中定义一个变量专门用来保存b.id,这样如果表单值为空,那么bId也将为空,我们可以通过判断该值,来手工的设置a的b属性值,这里的设置,最后是根据bId通过service查询出对象来,然后设置给a,或者设置a.b为null,这样操作以后,struts2就不会默认为a.b创建对象了,也就不会发生上面的错误了。

 

 

 

1
4
分享到:
评论

相关推荐

    10_传智播客JPA详解_JPA中的一对多双向关联与级联操作

    在Java世界中,Java Persistence API(JPA)是Oracle公司推出的用于对象关系映射(ORM)的标准框架,它简化了数据库操作,使开发者能够用Java对象来操作数据库记录。本教程将深入探讨JPA中的一对多双向关联及级联...

    毕业设计-物流管理系统的设计与实现(java)

    3.Caused by:org.hibernate.TransientObjectException:object references an unsaved transient instance 原因:代码中关联的对象没有set值进去。查看代码,发现是enterPriseStrength和enterprise为多对一

    Hibernate映射导致的几个异常

    TransientObjectException: object references an unsaved transient instance 这个异常通常发生在级联操作中,例如当配置了`cascade="save-update,persist"`。如果在保存一个对象时,该对象引用了一个未保存的...

    制作调试过程及数据记录1

    在调试过程中,可能会遇到`Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance`这样的异常。这个异常通常是因为在持久化操作时,关联的对象没有被正确设置。例如...

    java 遇到的各种异常

    `org.hibernate.TransientObjectException`: object references an unsaved transient instance** - **异常描述**:当尝试保存一个对象时,该对象引用了一个尚未被持久化的对象。 - **原因分析**:通常发生在尝试...

    hibernate常见错误解决方案

    **TransientObjectException: object references an unsaved transient instance** **异常描述:** 此异常表示一个实体引用了另一个尚未保存的瞬态实体。 **解决方法:** - 在保存实体之前先保存所有关联的瞬态...

    JPA 开发中遇到的错误

    org.hibernate.TransientObjectException: object references an unsaved transient instance 当一个实体引用了另一个尚未保存的实体时,会抛出此类异常。这通常发生在级联保存的场景中,如果父实体尝试保存时,子...

    用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统

    48. struts2-spring-plugin-2.0.11.2.jar 49. //struts2必须 50. xwork-2.0.5.jar  数据库设计(使用MySql数据库): Java代码 1. create table user 2. ( 3. id varchar(32) not null, 4. userName ...

    Object-Oriented Software Construction 2nd

    Chapter 2: Criteria of object orientation 21 2.1 ON THE CRITERIA 21 2.2 METHOD AND LANGUAGE 22 2.3 IMPLEMENTATION AND ENVIRONMENT 31 2.4 LIBRARIES 33 2.5 FOR MORE SNEAK PREVIEW 34 2.6 BIBLIOGRAPHICAL ...

    带进度条的Struts2文件上传

    Struts2是一个强大的Java web框架,它为开发者提供了构建MVC(模型-视图-控制器)应用程序的结构。在Struts2中实现带进度条的文件上传是一项实用功能,能够提高用户体验,让用户在等待文件上传时能清晰地看到进度。 ...

    ssd7数据库机试2

    2.Branch(BranchID,BranchName,BranchAddr,BranchPhone,BankID) --strong PK: (BranchID) AK: (BranchName) FK: BankID references Bank(BankID) 3.Customer(CustomerID,FirstName,MiddleName,LastName,...

    Reinforcement Learning:An Introduction.pdf

    references still need to be thoroughly checked, and an index still needs to be added. Please send any errors to rich@richsutton....

    References.rar

    【参考资料RAR压缩包】包含了一系列关于异常检测和性能问题定位的学术论文,这些论文主要集中在IT领域的关键性能指标(KPIs)监控、无监督学习、时间序列分析以及大规模数据聚类等方面。以下是对这些文件内容的详细...

    DB2异常代码查询大全

    ### DB2异常代码查询大全 #### 概述 在数据库管理与维护的过程中,遇到各种异常情况是在所难免的。为了帮助DBA(数据库管理员)和技术支持人员更好地理解这些异常背后的原因,并快速定位问题所在,本篇文章将详细...

    equals(Object) 与 == 的区别

    在 Object 类中定义的 equals(Object) 方法只是简单地使用 == 运算符来比较两个对象的引用。因此,如果我们没有覆盖 equals(Object) 方法,那么它的行为与 == 运算符相同。 但是,equals(Object) 方法的特殊之处...

    ABB HVDC References - 高压直流 (输配电解决方案).flv

    ABB HVDC References - 高压直流 (输配电解决方案)flv,ABB HVDC References - 高压直流 (输配电解决方案)high-voltage direct current 高压直流(电) HVDC(高压直流输电)是ABB 50多年前开发的一项技术,旨在提高远...

    面向对象程序设计实验指导书实.doc

    本实验指导书旨在帮助学生理解和掌握面向对象程序设计的基本概念和技术,包括类和对象、构造函数和析构函数、this 指针、对象数组和对象指针、对象引用等知识点。 一、实验目的 * understanding the significance ...

    深度探索C++对象模型 超清版

    第7章 站在对象模型的类端(On the Cusp of the Object Model) 7.1 Template Template的“具现”行为(Template Instantiation) Template的错误报告(Error Reporting within a Template) Template中的名称决议...

    db2 异常说明

    ### DB2异常说明 在DB2数据库管理系统的使用过程中,可能会遇到各种各样的错误和异常情况。这些异常通常由特定的SQLCODE和SQLSTATE来标识,以便于开发人员和DBA能够快速定位问题并进行相应的处理。下面将详细介绍...

Global site tag (gtag.js) - Google Analytics