Для этого используется Object#equals()
. Вы можете изменить (исправить) это поведение, применив его соответственно к вашей сущности.
private Long id;
@Override
public boolean equals(Object other) {
return (other != null && getClass() == other.getClass() && id != null)
? id.equals(getClass().cast(other).id)
: (other == this);
}
Не забывайте, что hashCode()
удовлетворяет equals-hashCode контракт .
@Override
public int hashCode() {
return (id != null)
? (getClass().hashCode() + id.hashCode())
: super.hashCode();
}
Если вы не можете изменить существующий объект по какой-то неясной причине, оберните его в свой собственный DTO.
Конвертер преобразует только объект и его уникальный String
для использования в выводах HTML и HTTP-запроса и поэтому не влияет на выбор. Это влияет только на потенциальную ошибку Validation: значение недопустимо .