Google App Engine,JDO和equals/hashCode

bpa*_*apa 10 java google-app-engine equals hashcode jdo

我在谷歌应用引擎中有一个工作正常.我意识到我忘记实现的JDO增强对象中的一个等于和hashCode(我需要在一个集合中使用该对象).所以我做了.我没有在这些实现中做任何特别的事情,事实上我只是使用Eclipse来生成它们.像这样:

@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;

@Persistent
private String appleId;

@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result
            + ((appleId == null) ? 0 : appleId.hashCode());
    return result;
}

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    User other = (User) obj;
    if (appleId == null) {
        if (other.appleId != null)
            return false;
    } else if (!appleId.equals(other.appleId))
        return false;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

所以现在,当我尝试点击应用中的任何网址时,会抛出此异常:

/ addUser javax.jdo.JDOUserException:持久化类"类com.bpapa.myapp.domain.User似乎没有得到增强.您可能需要重新运行增强器并检查输出中的错误." 数据库中没有表,但操作需要它.请检查此类的MetaData规范.在org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:427)org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:249)at com.bpapa.myapp.servlet.AddUserServlet.doPost(AddUserServlet.java) :34)

关于我做错了什么的任何想法?

小智 14

eclipse中的配置("运行datanucleus enhancer" - 与上面讨论的相关问题)

项目设置 - > Google - > App Engine - > ORM

将src parh"src /"路径更改为JDO类的确切"src //"路径


Pet*_*ore 11

你有eclipse设置自动运行datanucleus增强器?如果您尝试使用project-> clean清理项目然后从头开始构建项目,该怎么办?