Android id不能为零插入新实体时出错

Android id不能为零插入新实体时出错,android,google-app-engine,jpa,Android,Google App Engine,Jpa,我正在尝试使用JPA在AppEngine数据存储中插入一个新实体。我得到下面的错误。有人能告诉我可能出了什么问题吗 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

我正在尝试使用JPA在AppEngine数据存储中插入一个新实体。我得到下面的错误。有人能告诉我可能出了什么问题吗

 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;}

 }

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

我使用JPA,它工作正常。我不确定您的问题是什么,但您可以尝试以下方法:

  • 如果将生成类型更改为
    GenerationType.IDENTITY
    ,该怎么办
  • 如果您使用本机
    long
    而不是
    long
    ,该怎么办

  • 您的id为0,但无法。请在实体中使用setId()方法。仍然是相同的问题。native long会更糟糕,因为它默认为0。