Если объект еще не является постоянным, то есть ли вред при сравнении двух объектов на основе их атрибутов?
Я не уверен, почему это не удалось в вашем проекте, но по моему опыту сравнение, основанное на атрибутах, почти всегда является скользким, если ваши атрибуты не являются окончательными. Это означает, что 2 объекта, которые сейчас равны, могут через некоторое время не стать равными. Это очень плохо.
Учитывая, что большинство классов Java написаны вместе со своими средствами доступа, сравнивать атрибуты на равных называют плохой идеей.
Однако я, вероятно, сначала проверил бы, не является ли поле идентификатора пустым. Если оно пустое, я бы вернулся к сравнению атрибутов. Если он не нулевой, просто используйте его и больше ничего не делайте. Имеет ли это смысл?