客观化注释 - 要求良好,坚实的例子

时间:2014-04-09 13:09:43

标签: google-app-engine annotations persistence objectify

我的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注释吗?

2 个答案:

答案 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,前提是您尚未初始化。如果是Stringlong,则您必须自己提供该值。

正如@stickfigure所提到的,你的问题与JDO注释无关,因为你正在使用Objectify。将您的ID类型更改为Longlong,错误消失,如下所示:

@Id long id;