У меня есть приложение в Google App Engine, которое работает нормально. Я понял, что один из моих 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;
}
Итак, теперь, когда я пытаюсь перейти по любому URL-адресу в приложении, возникает это исключение:
/ addUser 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.blet.java: : 34)
Есть идеи о том, что я сделал не так?