У меня есть приложение в 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: Постоянный класс «Класс com.bpapa.myapp.domain.User, по-видимому, не улучшен. Возможно, вы захотите перезапустить энхансер и проверить ошибки в выходных данных». не имеет таблицы в базе данных, но операция требует этого. Пожалуйста, проверьте спецификацию метаданных для этого класса.
в 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)
Есть идеи, что я сделал не так?