По какой-то причине, когда lazy = true для всех моих объектов, метод equals() работает некорректно, если одна сторона является лениво загруженной сущностью, а другая сторона является нормальной сущностью. Вот пример:
if(activeTask.getTask().equals(task)) {...}
В этом случае задача activeTask будет прокси-сервером, а правая сторона будет регулярной. Значение equals() не будет выполнено. Чтобы решить эту проблему, я часто делаю такие вещи:
if(activeTask.getTask().getId() == task.getId()) {...}
Это работает, но это не идеально. Я бы предпочел использовать метод equals().
Есть ли у кого-нибудь хорошее решение этой проблемы? Это действительно добавляет уровень шума приложения, чтобы думать о таких вещах.
Если я говорю lazy = false, мне не нужно иметь дело с прокси-сервером, и поэтому equals() будет работать. Но это оказывает очень негативное влияние на производительность.
Просто нехорошо говорить: "equals() работает во всех случаях, за исключением случаев, когда вы используете прокси-серверы... тогда equals() не является надежным".