Как правильно проверить циклическую c ссылку на самоссылающуюся сущность? - PullRequest
0 голосов
/ 01 марта 2020

У меня класс сущностей выглядит следующим образом.

@Entity
public class Category {

    @OneToMany(optional = true)
    @JoinColumn(name = "parent_id", nullable = true)
    private Category parent; // null when this entity is a root
}

Теперь я хочу добавить метод для подтверждения отсутствия циклических c ссылок в графе объектов.

@AssertFalse
private boolean isCyclicReferencing() {
    for (Parent parent = getParent(); parent != null; parent = parent.getParent()) {
        if (Objects.equals(parent.getId(), getId())) { // This?
            return true;
        }
        if (parent == this) { // Or This?
            return true;
        }
    }
    return false;
}

Какой правильный способ сравнения?

    if (Objects.equals(parent.getId(), getId())) {
        return true;
    }

ИЛИ

    if (parent == this) {
        return true;
    }

?

...