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