Я знаю, что для метода equals реализация должна быть такой, чтобы избежать проблем в случае возврата Hibernate прокси-объектов.
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Parent)) return false;
Parent parent = (Parent) o;
return getName() != null ? getName().equals(parent.getName()) : parent.getName() == null;
}
- Мне нужно использовать
instanceof
. (Если я сравниваю как getClass() != o.getClass()
, это всегда будет верно для прокси-объекта o) - Я должен использовать геттеры для загрузки прокси-объекта, в противном случае поле будет
null
.
Но Я также хочу знать, верно ли для реализации hashcode
, должен ли я использовать геттеры с учетом объектов прокси?
Должен ли я реализовать так:
public int hashCode() {
return getName().hashCode();
}
Или это нормально для реализации как это тоже:
public int hashCode() {
return name.hashCode();
}
Примечание. Предположим, что имя не является пустым полем.