У меня есть следующие 2 methods
ниже.Решение Циклическая зависимость бесконечная петля с использованием счетчика?
В правильном случае использования cancelChildTree()
звонит removeChildRelationsIfNecessary()
, а затем переходит через мой код.
Однако для некоторых данных в моей базе данных существует circular dependency
между родителями и детьми. Это приводит к тому, что 2 метода продолжают звонить друг другу в infinite loop
.
Как я могу решить эту проблему? Мой план состоял в том, чтобы попытаться добавить counter
, чтобы обнаружить, что произошел цикл infinite
, - затем перейдите для этого отношения родительского дочернего элемента.
Метод 1:
private void cancelChildTree(Parent parent) {
removeChildRelationsIfNecessary(parent);
//Note that the 2 methods below never get called if the infinite loop occurs
otherMethod();
anotherMethod();
}
Метод 2:
private void removeChildRelationsIfNecessary(Parent parent) {
List<Child> childList = parent.getParentChildRelationship());
for (Child child: childList {
cancelChildTree(child);
}
}
Я обновил свой код, извините, что это была старая версия, скопировать и вставить неправильную. – java123999
Мое мнение заключалось в том, что вы все время вызываете этот метод на ** том же ** объекте. И когда я смотрю на ваше редактирование, это все еще похоже на это. Таким образом, я не получаю то, что вы пытаетесь сказать своим комментарием здесь. – GhostCat