Как установить сущность в проекте Spring-boot с Neo4j? - PullRequest
1 голос
/ 28 октября 2019

Я имею в виду кое-что: если я использую Spring Boot для создания Neo4j-проекта , мне нужно заранее определить свойства и методы Entity. Если я позже захочу добавить новые ребра или атрибуты на график, даже новые типы узлов, как мне обрабатывать сущности?

1 Ответ

0 голосов
/ 28 октября 2019

On Ссылаясь на данные Spring - Neo4j Docs

, вы можете писать Entities следующим образом

Пример кода Entity:

package com.example.accessingdataneo4j;

import java.util.Collections;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;

import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;

@NodeEntity
public class Person {

    @Id @GeneratedValue private Long id;

    private String name;

    private Person() {
        // Empty constructor required as of Neo4j API 2.0.5
    };

    public Person(String name) {
        this.name = name;
    }

    /**
     * Neo4j doesn't REALLY have bi-directional relationships. It just means when querying
     * to ignore the direction of the relationship.
     * https://dzone.com/articles/modelling-data-neo4j
     */
    @Relationship(type = "TEAMMATE", direction = Relationship.UNDIRECTED)
    public Set<Person> teammates;

    public void worksWith(Person person) {
        if (teammates == null) {
            teammates = new HashSet<>();
        }
        teammates.add(person);
    }

    public String toString() {

        return this.name + "'s teammates => "
            + Optional.ofNullable(this.teammates).orElse(
                    Collections.emptySet()).stream()
                        .map(Person::getName)
                        .collect(Collectors.toList());
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Края или отношения могут быть выполнены следующим образом

@Relationship(type = "TEAMMATE", direction = Relationship.UNDIRECTED)
public Set<Person> teammates;

Здесь человек [Узел] подключен к другим узлам [товарищам по команде] и Храним.

где бы вы ни проектировали, вы можетедобавьте новые классы и напишите схему и запустите сервер.

Для выполнения операций CRUD вы можете использовать репозиторий Spring data jpa.

PersonRepository расширяет интерфейс GraphRepository и подключается к типу, с которым он работает:Человек. Этот интерфейс поставляется со многими операциями, включая стандартные операции CRUD (создание, чтение, обновление и удаление).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...