entityManager.persist(user) -> javax.persistence.EntityExistsException: User@b3089 已经持久化

Posted

技术标签:

【中文标题】entityManager.persist(user) -> javax.persistence.EntityExistsException: User@b3089 已经持久化【英文标题】:entityManager.persist(user) -> javax.persistence.EntityExistsException: User@b3089 is already persistent 【发布时间】:2011-04-01 10:35:38 【问题描述】:
// lookup existing user & set a currently null child entity (ContactInfo)
user.setContactInfo(contactInfo);

// update the user in the datastore with newly created child Entity             
entityManager.persist(user);

产生异常:

javax.persistence.EntityExistsException: User@b3089 is already persistent

由于用户已经存在,除了entityManager.persist 之外,我应该使用其他方法进行更新而不是插入吗?

【问题讨论】:

【参考方案1】:

entityManager.merge(user) 呢?

另外,请参阅here。

【讨论】:

【参考方案2】:

您的user 实例已经加载到持久化上下文中,只需修改它并不要调用任何EntityManager 方法,JPA 提供程序将在刷新或提交时自动更新数据库.

【讨论】:

以上是关于entityManager.persist(user) -> javax.persistence.EntityExistsException: User@b3089 已经持久化的主要内容,如果未能解决你的问题,请参考以下文章

EntityManager.flush 有啥作用,为啥需要使用它?

Spring @Transactional 方法中没有事务开始

MySQL 执行计划中Extra(Using where,Using index,Using index condition,Using index,Using where)的浅析

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.

关于Vue.use()详解

cstring头文件里的函数怎么用