0 0

hibernate复杂的更新问题10

需要从webservice中获取的对象更新到数据库。 反序列化对象以后,使用hibernate进行数据更新

对象中结构是a包括一组b对象。

b list中可能包括加入新的b实例,可能对以前的数据做过更新,或者完全一样。

我首先使用session.update(a),提示的错误是a中存在unsaved的对象 (增加了新的b到list中)

我改用session.merge ,并且a和b配置中都定义了timepstamp,对新的b对象没设置更新时间。更新的a的时候会报告错误。Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect):

如果b list的数据都设置了timpestamp,数据可以被更新。但是怎么对新的b对象设置更新时间呢。

如果取消掉timpestamp的话,总是尝试插入新的数据,即使identifier设置相同

请问有什么好的办法来处理码




问题补充:
经过测试的最后答案

set中设置cacade为 all-delete-orphan
session使用merge方法更新a对象,b list联动被更新,list中子对象取消了timestamp设置。
2008年6月17日 21:33

1个答案 按时间排序 按投票排序

0 0

一点建议。
用saveOrUpdate,假设你配置cascade是delete-orphan。未经过验证。

2008年6月18日 00:28

相关推荐

    Hibernate复杂关系映射

    轻量级javaee 企业应用于实践 有专业教授现场演示 内容和清晰 态度亲切 不可或缺

    如何解决hibernate自动更新实体类的问题共5页.pdf.zip

    在Java的持久化框架Hibernate中,自动更新实体类的问题是一个常见的困扰开发者的问题。当实体类的状态发生改变,Hibernate默认会尝试将这些变化同步到数据库,这在某些情况下并不符合我们的需求。本文将深入探讨这个...

    hibernate3 hibernate3

    2. 支持复杂查询:除了HQL和Criteria API,Hibernate还支持原生SQL查询,以处理更复杂的查询需求。 3. 数据缓存:通过二级缓存机制,提高数据访问效率,减少对数据库的直接访问。 4. 支持事务:提供了事务管理和...

    Beginning Hibernate: For Hibernate 5

    - **版本**: 本书针对 Hibernate 5.0 版本进行了更新和介绍,这是在 Java 社区中广泛使用的最新版本。 #### 为什么学习 Hibernate - **简化开发**: Hibernate 大大减少了开发者处理复杂 SQL 查询的工作量,使得...

    Hibernate-extensions 完整安装包

    然而,为了满足更复杂的业务需求,Hibernate还提供了丰富的扩展功能,这就是我们今天要讨论的Hibernate-Extensions。这个完整的安装包,包含了一系列强大的工具和功能,旨在提升开发效率,优化数据管理。 一、...

    Hibernate,hibernate笔记

    `hibernate.hbm2ddl.auto`可以设置为"create-drop"、"create"、"update"或"validate",分别对应在启动时创建/删除数据库结构、创建数据库结构、更新数据库结构或验证数据库结构。 3. **HQL(Hibernate Query ...

    hibernate aip hibernate aip

    8. **查询优化**:避免N+1查询问题,使用JOIN fetch提前加载关联数据,使用HQL或JPQL替代原生SQL以利用Hibernate的优化能力。 9. **错误处理和日志记录**:理解Hibernate常见的错误和异常,如 detached entity ...

    hibernate-3.2源代码

    《深入剖析Hibernate 3.2源代码...通过深入学习Hibernate 3.2的源代码,开发者不仅可以了解其实现原理,还能在遇到问题时更快定位,进行定制化开发。同时,这也有助于理解ORM框架的工作方式,提升软件设计和开发能力。

    Hibernate Hibernate5 讲义 PDF

    Hibernate是一个开源的对象关系映射(ORM)框架,它封装了JDBC(Java Database Connectivity)的复杂性,并允许Java开发者以面向对象的方式操作数据库。Hibernate框架被广泛应用于企业级Java应用程序中,可以与...

    hibernate学习资料大全

    此外,还有Criteria API和HQL(Hibernate Query Language)用于复杂查询。 6. **事务管理**: 在Hibernate中,事务处理是通过Session的beginTransaction()、commit()和rollback()方法实现的。了解事务的ACID特性...

    深入剖析hibernate的n+1问题和缓存问题

    然而,在使用Hibernate时,开发者可能会遇到一些性能问题,其中N+1问题和缓存问题尤为突出。 N+1问题是指当应用程序使用Hibernate进行数据库查询时,可能会导致执行多条SQL语句,从而导致性能下降。具体来说,在...

    hibernate实战 英文版

    5. **持续更新**:随着Hibernate版本的不断升级和发展,本书也在持续更新中,确保读者能够获取最新的技术和最佳实践。 #### 四、适用人群与学习建议 - **适用人群**: - Java开发人员,特别是那些希望深入学习和...

    hibernate第一个hibernate

    Hibernate是一个开源的Java库,它提供了一种在Java应用中持久化数据的方式,使得开发者无需编写大量的SQL语句,即可实现对数据库的CRUD(创建、读取、更新和删除)操作。它的核心理念是将面向对象的模型映射到传统...

    Hibernate3的依赖包

    8. **关联映射**:Hibernate支持一对一、一对多、多对一、多对多等各种关联关系的映射,方便地处理复杂的数据库关系。 9. **事件监听器**:通过事件监听机制,开发者可以在特定操作(如对象的保存、更新或删除)...

    hibernate 3.6 中文 chm

    4. **Session接口**:在Hibernate中,Session是与数据库交互的主要接口,负责保存、更新和删除对象,以及执行查询操作。理解Session的工作原理和生命周期对于有效使用Hibernate至关重要。 5. **Criteria查询**:...

    Hibernate-Extension Middlegen-Hibernate

    首先,Hibernate是Java平台上的一个开源ORM框架,它允许开发者用面向对象的方式来操作数据库,从而降低了数据库编程的复杂性。通过Hibernate,开发者可以避免编写大量的JDBC代码,只需定义对象的属性和关系,就能...

    Hibernate框架jia包

    此外,它还提供了查询语言HQL(Hibernate Query Language)和Criteria API,用于执行复杂的数据库查询。 3. **主要组件**: - **SessionFactory**:它是线程安全的,负责创建Session实例,是整个Hibernate的核心。...

    Hibernate入门案例源码

    例如,创建一个User类,然后通过Hibernate的Session接口进行CRUD(创建、读取、更新、删除)操作。 在MyEclipse和Eclipse中,配置Hibernate通常包括以下几个步骤: 1. 添加Hibernate库:你需要导入Hibernate的jar...

    hibernate5.2.9

    1. **对象关系映射(ORM)**:Hibernate的核心功能是将Java类与数据库表之间建立映射关系,使得可以通过对象的方式来操作数据库,降低了数据访问层的复杂性。 2. **配置文件**:在hibernate-release-5.2.9.Final中...

    Hibernate 概述

    例如,如果已经有了 Java 类和映射文档,Hibernate 可以为开发者创建(或更新)所需的数据库表。或者,仅从映射文档开始,Hibernate 也可以生成数据类。此外,还有一些针对 Eclipse 的 alpha 插件,可以在 IDE 中...

Global site tag (gtag.js) - Google Analytics