实体类是
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;
}
}持久化如下
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。
发布于 2015-11-16 11:29:58
这里有几个问题:
@Id字段需要以某种方式生成(这是异常告诉您的);您可以从添加注释@GeneratedValue(strategy=GenerationType.AUTO)开始,Book的属性"name“(既不是持久化的,也不是瞬态的)。https://stackoverflow.com/questions/33731489
复制相似问题