我在Google App Engine上有一个应用程序,一切正常。我意识到我的一个JDO增强对象没有实现equals和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;
}
现在,当我尝试访问应用程序中的任何URL时,会抛出以下异常:
/addUser javax.jdo.JDOUserException: 持久类 "Class com.bpapa.myapp.domain.User" 似乎没有被增强。您可能需要重新运行增强器并检查输出中的错误。该类在数据库中没有表,但操作需要它。请检查此类的元数据规范。 at org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:427) at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:249) at com.bpapa.myapp.servlet.AddUserServlet.doPost(AddUserServlet.java:34)
有什么想法是我做错了什么?