我在 Google App Engine 中有一个运行良好的应用程序。我意识到我忘记实现 equals 和 hashCode 的一个 JDO 增强对象(我需要在集合中使用该对象)。所以我做了。我在这些实现中并没有真正做任何特别的事情,事实上我只是使用 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;
}
所以现在,当我尝试访问应用程序中的任何 URL 时,都会抛出此异常:
/添加用户
javax.jdo.JDOUserException:持久类“com.bpapa.myapp.domain.User 类似乎没有得到增强。您可能需要重新运行增强器并检查输出中的错误。”数据库中没有表,但操作需要它。请检查该类的元数据规范。
在org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:427)
在 org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:249)
在 com.bpapa.myapp.servlet.AddUserServlet.doPost(AddUserServlet.java:34)
关于我做错了什么有什么想法吗?
Eclipse 中的配置(“运行 datanucleus 增强器”- 如上所述的相关问题)
项目设置 -> Google -> App Engine -> ORM
将 src 路径“src/”路径更改为 JUDO 类的确切“src//”路径
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)