猿问

使用JPA / EJB代码的“传递给持久错误的分离实体”

我正在尝试运行以下基本JPA / EJB代码:


public static void main(String[] args){

         UserBean user = new UserBean();

         user.setId(1);

         user.setUserName("name1");

         user.setPassword("passwd1");

         em.persist(user);

  }

我收到此错误:


javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: com.JPA.Database

有任何想法吗?


我在互联网上搜索,发现的原因是:


这是由创建对象的方式引起的,即,如果您显式设置ID属性。删除ID分配即可解决此问题。


但是我没有得到,我必须修改什么才能使代码正常工作?


九州编程
浏览 339回答 3
3回答

DIEA

发生此错误是因为设置了对象的ID。Hibernate区分临时对象和分离对象,并且persist仅适用于临时对象。如果persist断定对象是分离的(因为设置了ID,它将分离),它将返回“分离的对象传递给持久化”错误。您可以在此处和此处找到更多详细信息。但是,这仅在您指定要自动生成的主键时适用:如果将该字段配置为始终手动设置,则您的代码将起作用。
随时随地看视频慕课网APP

相关分类

Java
我要回答