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.