首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.apache.openjpa.persistence.EntityExistsException:试图持久化分离对象

问org.apache.openjpa.persistence.EntityExistsException:试图持久化分离对象
EN

Stack Overflow用户
提问于 2015-11-16 08:57:51
回答 1查看 3.5K关注 0票数 1

实体类是

代码语言:javascript
复制
        package com.dunkul.entity;

            import java.io.Serializable;
            import javax.persistence.Column;
            import javax.persistence.Entity;
            import javax.persistence.EntityListeners;
            import javax.persistence.GeneratedValue;
            import javax.persistence.GenerationType;
            import javax.persistence.Id;
            import javax.persistence.Table;

            @Entity
            @Table(name="employee")
            public class Book implements Serializable{

               private int id;
               private String name;

               public Book(){        
               }

               @Id

               @Column(name="Id")
               public int getId() {
                  return id;
               }

               public void setId(int id) {
                  this.id = id;
               }

               public String getName() {
                  return name;
               }

               public void setName(String name) {
                  this.name = name;
               }    
            }

持久化如下

代码语言:javascript
复制
           public void addBook(Book book) {
              entityManager.persist(book);
           }    

获得以下异常

信息:使用字典类"org.apache.openjpa.jdbc.sql.MySQLDictionary“(MySQL 5.7.9-log,MySQL Connector连接器-java-5.1.37(修订本: 09940f05b4c98150f352e787a2549f11a2e9d a93 ))。2015年11月16日2:08:03 PM null信息:使用JDBC驱动程序连接到MySQL version 5.5 MySQL Connector Java版本mysql-连接器-java-5.1.37(修订本: 09940f05b4c98150f352e787a2549f11a2e9da93 )。2015年11月16日下午2:08:04 PM org.apache.openejb.core.transaction.EjbTransactionUtil handleSystemException handleSystemException: EjbTransactionUtil.handleSystemException:试图持久化分离对象"com.dunkul.entity.Book@1c7cf37d“。如果这是一个新实例,请确保任何版本和/或自动生成的主键字段在持久化时为空/默认。org.apache.openjpa.persistence.EntityExistsException:试图持久化分离的对象"com.dunkul.entity.Book@1c7cf37d“。如果这是一个新实例,请确保任何版本和/或自动生成的主键字段在持久化时为空/默认。org.apache.openjpa.kernel.BrokerImpl.persistInternal(BrokerImpl.java:2659) at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2602) at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2585): FailedObject: com.dunkul.entity.Book@1c7cf37d。

请帮帮忙。表书有2列。身份证和名字。Id为PK,NN名为VARCHAR(45)。默认名称为NULL。

EN

回答 1

Stack Overflow用户

发布于 2015-11-16 11:29:58

这里有几个问题:

  • 实体名是"Book",但是它映射到的表是"employee";它本身不是一个错误,而是有意的吗?
  • 您的@Id字段需要以某种方式生成(这是异常告诉您的);您可以从添加注释@GeneratedValue(strategy=GenerationType.AUTO)开始,
  • 没有映射Book的属性"name“(既不是持久化的,也不是瞬态的)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33731489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档