`
win101010
  • 浏览: 10487 次
  • 性别: Icon_minigender_1
  • 来自: 永州
社区版块
存档分类
最新评论

hibernate merge方法返回对象没有id

 
阅读更多
用save方法可以得到,
a different object with the same identifier value was already associated with the session
该异常先session.clear()一下,再操作。
分享到:
评论

相关推荐

    Hibernate merge、update与saveOrUpdate方法的区别

    在Hibernate框架中,`merge`、`update`与`saveOrUpdate`这三个方法都是用于更新或保存实体对象到数据库中的,但它们之间存在着重要的区别,这些区别主要体现在对实体状态的处理方式上。 #### 1. `merge` 方法 `...

    hibernate3.2生命周期

    - **merge()**:适用于任何状态的对象,无论对象是否与Session关联,都会先复制对象状态到Session缓存中的副本,然后根据对象ID进行更新或插入。 - **saveOrUpdate()**:根据对象ID判断是插入还是更新,简化了代码...

    hibernate-3.2.rar

    13. **实体生命周期**:Hibernate 3.2定义了对象的生命周期,包括`Transient`, `Persistent`, `Detached`三种状态,并提供了`merge()`, `evict()`, `refresh()`等方法来控制对象的状态转换。 14. **代理对象**:在...

    hibernate基础教程.pdf

    - **更新(Update)**:当对象的属性发生变化时,调用 `Session` 的 `update()` 或 `merge()` 方法,Hibernate 会自动更新数据库。 - **删除(Delete)**:`delete()` 方法用于从数据库中移除对象。 **懒加载与级联...

    hibernate开发租房系统

    3. 更新:调用`Session`的`update()`或`merge()`方法更新对象状态。 4. 查询:使用`Session`的`createQuery()`或`createCriteria()`方法构建HQL(Hibernate Query Language)或Criteria查询,获取数据。 四、Ajax...

    hibernate笔记

    - **检索(Get)**: `Session.get()` 也根据主键获取对象,但对象不存在时返回 null。 5. **HQL(Hibernate Query Language)** - HQL 是 Hibernate 提供的面向对象的查询语言,类似于 SQL,但更接近 Java 语法。...

    Hibernate中get和load方法的区别以及close(),clear()、evict()等的区别

    这是因为`load`方法假设给定的ID肯定在数据库中存在,它采用延迟加载策略,先返回代理对象,当尝试访问对象属性时才会真正去数据库查询。如果此时数据库中无记录,则抛出异常。 - 相反,`get`方法在找不到对应记录...

    Hibernate笔记

    `get` 方法直接从数据库获取对象,`load` 返回对象的代理,延迟加载数据。`saveOrUpdate` 和 `merge` 根据对象状态决定是保存还是更新,其中 `merge` 会返回一个新的托管对象。`lock` 方法则用于将对象变为持久化...

    深入理解持久化对象

    这两个方法的主要区别在于,`save()`方法返回对象的标识符,而`persist()`方法则不返回任何值。 - **加载持久化对象**: - `load()`方法:根据主键加载持久化对象,支持延迟加载特性,即只有当真正访问对象属性时...

    Hibernate的学习笔记

    - `load()`:返回的是一个代理对象(proxy),首次访问时才会懒加载数据,从Session缓存或二级缓存中查找,如果没有则从数据库加载。相比`get()`,`load()`更利于缓存利用。 - `save()`:将自由状态(Transient)...

    Spring mvc+hibernate例子(包括登录、增删改查等简单功能)

    - 调用 DAO 的 `update()` 或 `merge()` 方法更新对象。 5. **查询功能:** - 可以使用 Hibernate 的 `Query` 或 `Criteria` API 实现简单的查询,也可以自定义复杂的 HQL 查询。 - 结果集返回给 Controller,再...

    Hibernate对数据库操作的一些理解.pdf

    在`testUpdate1()`示例中,创建了一个用户对象并设置了已存在的ID,然后调用`update()`方法,Hibernate会尝试将这个对象的属性更新到数据库对应的记录上。 3. **查询操作:Get与Load**: - `get()`方法直接查询...

    HibernateAPI

    - `merge()`方法则用于将 detached 对象的状态合并到 session 中。 6. **查询语言(HQL)** Hibernate 提供了类似于 SQL 的 HQL(Hibernate Query Language),用于查询对象。HQL支持复杂的查询条件、关联查询和...

    spring+struts2+hibernate 增删改查

    这里的`userRepository`是一个使用Hibernate的DAO,通过`save()`方法将`User`对象持久化到数据库。 2. **读取**(Read):为了显示数据,通常会在Struts2 Action中调用Service层的方法获取数据,然后传递给JSP或...

    hibernate学习笔记定义.pdf

    get()方法在找不到对象时返回null,而load()方法在找不到对象时会抛出异常。 5. update():更新一个游离状态的对象到持久化状态。 6. merge():合并一个游离状态的对象到持久化状态,解决并发问题。 7. lock():锁定...

    hibernate教程

    1. **对象的持久化**:使用`save()`或`persist()`方法将对象插入数据库,`update()`或`merge()`用于更新对象状态。 2. **对象的检索**:通过`get()`、`load()`或`query`方法获取对象。`load()`返回代理对象,而`get...

    Hibernate实践

    - **Update**:update()方法更新对象,merge()方法将持久化状态的对象与临时对象合并。 - **Delete**:delete()方法删除对象。 6. **HQL与Criteria查询** - **HQL(Hibernate Query Language)**:面向对象的...

    hibernate学习笔记

    - `get()`和`load()`:两者都用于获取对象,但`load()`使用懒加载,若对象不存在则抛出异常,而`get()`直接返回null。 - `save()`和`persist()`:`save()`在事务中直接插入数据,而`persist()`仅标记对象为持久化...

    Hibernate教程

    例如,我们可以使用`save()`或`saveOrUpdate()`方法插入数据,`load()`或`get()`方法获取数据,`update()`或`merge()`方法更新数据,以及`delete()`方法删除数据。 5. **HQL和Criteria查询**: Hibernate提供了自己...

Global site tag (gtag.js) - Google Analytics