findAll () не возвращает @RelationshipEntity в @NodeEntity - PullRequest
0 голосов
/ 17 марта 2020

Я использую spring-data-neo4j с spring-boot для создания REST-API. Я хочу добавить базовую функциональность CRUD для сущностей (InfoCard) и отношений (REFERS_TO). При извлечении сущностей я хочу видеть отношения как минимум глубины = 1.

InfoCard Pojo:

@NodeEntity
public class InfoCard {
    @Id @Getter @NonNull
    private String id;
    @Getter @Setter
    private String userId;
    @Getter @Setter
    private Date dateAdded;
    @Getter @Setter
    private Date dateChanged;
    @Getter @Setter
    private boolean removable = true;

    @Relationship(type = "REFERS_TO")
    @Getter @Setter
    private List<InfoCard> referredCards = new ArrayList<>();

    @JsonCreator
    public InfoCard(@NonNull @JsonProperty(required = true) String id) {
        this.id = id;
    }
}

Отношения между сущностями:

@RelationshipEntity(type = "REFERS_TO")
public class RefersToLink {
    @Id
    @Getter
    @NonNull
    @GeneratedValue
    private Long id;
    @StartNode
    @Getter @Setter
    private InfoCard from;
    @EndNode
    @Getter @Setter
    private InfoCard to;

    public RefersToLink() {}
}

Я использую Neo4jRepository классы для функциональности CRUD. Моя проблема в том, что когда я вызываю findAll() в экземпляре хранилища, я получаю все узлы InfoCard, но он не возвращает ссылочные карточки для каждой InfoCard. Когда я удаляю @RelationshipEntity и просто использую встроенный @Relationship, это работает как ожидалось. В документации говорится, что findAll() по умолчанию использует глубину 1, что означает, что прямые отношения возвращаются даже без параметра.

Что я получаю:

{
    "entities": [
        {
            "id": "35",
            "removable": true,
            "referredCards": []
        },
        {
            "id": "test3",
            "removable": true,
            "referredCards": []
        }
    ]
}

Что я хочу :

{
    "entities": [
        {
            "id": "35",
            "removable": true,
            "referredCards": [
                {
                    "id": "test3",
                    "removable": true,
                    "referredCards": []
                }
            ]
        },
        {
            "id": "test3",
            "removable": true,
            "referredCards": []
        }
    ]
}

Я предпочитаю использовать RelationshipEntity, потому что он будет более гибким, чем другой подход, если я добавлю свойства позже, и я не понимаю, почему это не сработает.

...