У меня есть приложение в Google App Engine, которое отлично работает. Я понял, что один из моих объектов с улучшенными JDO, которые я забыл реализовать равными и hashCode (мне нужно использовать объект в наборе). Так я и сделал. Я не делал ничего особенного в этих реализациях, на самом деле я просто использовал Eclipse для их создания. Как так:Google App Engine, JDO и equals/hashCode
@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: Persistent класс «Класс ком. bpapa.myapp.domain.User, похоже, не был расширен. Возможно, вам захочется повторно запустить усилитель и проверить ошибки в выходе. " не имеет таблицы в базе данных, но для этого требуется операция. Проверьте спецификацию MetaData для этого класса. на 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)
Любые идеи о том, что я сделал не так?
Выполнение чистых фиксированных вещей. – bpapa