3

我正在尝试使用 JPA 在应用引擎数据存储中插入一个新实体。我收到以下错误。有人可以建议什么可能是错的。

 java.lang.IllegalArgumentException: id cannot be zero
at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:52)
at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:47)
at com.google.appengine.api.datastore.KeyFactory.createKey(KeyFactory.java:35)
at com.google.appengine.datanucleus.EntityUtils.intOrLongToInternalKey(EntityUtils.java:381)
at com.google.appengine.datanucleus.EntityUtils.idToInternalKey(EntityUtils.java:220)
at com.google.appengine.datanucleus.EntityUtils.idToInternalKey(EntityUtils.java:208)
at com.google.appengine.datanucleus.DatastoreIdentityKeyTranslator.getKey(DatastoreIdentityKeyTranslator.java:32)

这是我的实体类

   //imports
   @Entity
   public class QuizTable {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String quizName;
private String quizContent;

public QuizTable(){}

public Long getId() {return id;}
public String getQuizName() {return quizName;}
public String getQuizContent() {return quizContent;}

public void setId(Long id) { this.id = id;}
public void setQuizName(String quizName) {this.quizName=quizName;}
public void setQuizContent(String quizContent) {this.quizContent=quizContent;}

 }
4

2 回答 2

0

id 是自动生成的(因为你想要),它不应该有一个 setter 方法。如果您愿意,请删除自动生成并手动设置。

于 2013-06-03T16:14:43.870 回答
0

我与 JPA 合作,它工作正常。我不确定你的问题,但你可以试试这个:

  1. 如果您将生成类型更改为GenerationType.IDENTITY怎么办?
  2. 如果您使用 nativelong而不是Long怎么办?
于 2013-06-04T02:51:42.237 回答