Проектирование класса, циклические ссылки

Столкнулся с проблемой. Есть класс Person имеющий поле типа Person

public class Person {
    private long id;
    private String name;
    private LocalDate dateOfBirth;
    private Person spouse;
    private List<Person> children;
    private Address address;
}

Первая проблема - это при создании объектов компилятор не дает использовать конструктор

Person person01 = new Person(7L, "John Smith", LocalDate.of(1966, 9, 10), person02, children01, address01);
Person person02 = new Person(8L, "Yulia Smith", LocalDate.of(1969, 5, 22), person01, children01, address01);

так как при создании объекта person01 объект person02 еще не существует (и наоборот). Поэтому использую следующую конструкцию:

Person person01 = new Person(7L, "John Smith", LocalDate.of(1966, 9, 10), null, children01, address01);
Person person02 = new Person(8L, "Yulia Smith", LocalDate.of(1969, 5, 22), person01, children01, address01);
person01.setSpouse(person02);

Но тут столкнулся со следующей проблемой: получаю бесконечный цикл при создании объектов. Собственно вопрос, как правильно реализовать такое поведение?

Пример вывода

"id": 7,
    "name": "John Smith",
    "dateOfBirth": "1966-09-10",
    "spouse": {
        "id": 8,
        "name": "Yulia Smith",
        "dateOfBirth": "1969-05-22",
        "spouse": {
            "id": 7,
            "name": "John Smith",
            "dateOfBirth": "1966-09-10",
            "spouse": {
                "id": 8,
                "name": "Yulia Smith",
                "dateOfBirth": "1969-05-22",
                "spouse": {
                    "id": 7,
                    "name": "John Smith",
                    "dateOfBirth": "1966-09-10",
                    "spouse": {
                        "id": 8,
                        "name": "Yulia Smith",
                        "dateOfBirth": "1969-05-22",
                        "spouse": {

И так далее


Ответы (0 шт):