我的App Engine项目中的JDO注释出了问题。我不明白他们。以为我可以在我的代码中注释某些东西,并且它在某种程度上起作用是黑魔法。 我得到了一个简单的Objectify Enity,它将Towns名称存储在一列中,我不知道如何对它们进行注释。
@Entity
public class Town {
@Id
int id;
@Index
String name;
private Town() {
}
public Town(int id, String name){
this.name = name;
this.id = id;
}
}
得到错误:
PM com.google.api.server.spi.SystemService invokeServiceMethod
INFO: cause={0}
java.lang.IllegalStateException: At path 'id': Error registering com.jagienka.entities.Town
但主要问题:有人可以举例说明如何使用JDO注释吗?
答案 0 :(得分:1)
GAE在幕后使用了DataNucleus项目,该项目涵盖了ALL JDO(和JPA)注释/ XML。显然有些可能不适用于其数据存储不提供该功能的GAE。
http://www.datanucleus.org/products/accessplatform_3_1/jdo/api.html
答案 1 :(得分:1)
您的错误是由于您的id
类型错误 - int
不允许造成的。注释为@Id
的字段只能是以下之一:
Long
long
String
如果类型为Long
,则Objectify
会自动为您生成ID,前提是您尚未初始化。如果是String
或long
,则您必须自己提供该值。
正如@stickfigure所提到的,你的问题与JDO注释无关,因为你正在使用Objectify。将您的ID类型更改为Long
或long
,错误消失,如下所示:
@Id long id;