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 (создание, чтение, обновление и удаление).