Как правильно обновить граф, содержащий удаление узлов с помощью данных весны neo4j?

Имейте простую структуру, как это.

@Data
public class DomainObject {
    @GraphId
    protected Long id;
    public String createdBy;
    public Date createdTS;
    public String lstModBy;
    public Date lstModTS;
}

@NodeEntity(label = "StepDef")
@Data
public class StepDef extends DomainObject{
    private String name;
    private String type;
    private String catCode;
    private String impClass;
    private String scope;
    @Relationship(type = "PROPERTY_OF" = Relationship.INCOMING)
    private List<StepDefProperty> properties;
}

@NodeEntity(label = "StepDefProperty")
@Data
public class StepDefProperty extends DomainObject{
        private String key;
        private String value;
        private String type;
        private String lookupKey;
}

Когда я пытаюсь добавить объекты StepDefProperty в список свойств и использую stepRepo.save(stepDef), он отлично сохраняется, как и ожидалось, вместе с отношением.

Проблема заключается в удалении одного из свойств узла. Поэтому, если я удаляю один из узлов свойств из списка и использую repo.save(stepDef), узел свойств не удаляется. Я думал, что это может быть связано с непоследовательной сессией. Поэтому я попытался сделать stepRepo.findOne(stepDef.getId()) перед выполнением repo.save(stepDef). Теперь это удаляет связь между узлами, однако узел свойств все еще присутствует в базе данных как сирота, хотя ожидал, что свойство узла вместе с отношением, которое будет удалено. Как правильно делать обновления через данные весны neo4j?

1 ответ

Вы определенно правильно используете API, когда речь идет о разобщении отношений между StepDef узел и StepDefProperty связи.

Проблема в том, что вы не сказали OGM Session что вы также хотите удалить узел на другом конце удаленного отношения.

Итак, вам нужно получить узел свойства, который нужно удалить, а также удалить его из коллекции в StepDef, Вы можете позвонить repo.delete(StepDefPropertyToBeDeleted) а также repo.save(stepDef) и все получится так, как вы собираетесь.

Другие вопросы по тегам