Kann jemand den Unterschied zwischen @GraphId
und @Index
Annotation von org.neo4j.ogm.annotation
errechnen? Nach dem Lesen der Dokumente scheint es, dass @GraphId
verwendet wird, um eine Kennung für die interne Logik von Neo4j zu erstellen, und Benutzer sollten sich nicht darauf verlassen, da sie im Laufe der Zeit wiederverwendet werden kann. Aber was ist mit @Index
?Spring Data Neo4j @GraphId und @Index
Wie ich verstehe, ist der Hauptvorteil von Graphen basierten Datenbanken, dass einmal kennen wir den Knoten/Beziehung, aus den Dingen zu beginnen einfach worden, da alles, was wir tun müssen, nur die Grafik von diesem Ausgangsdurchqueren wird Knoten. Und Indexierung hilft dabei, oder? Also können wir etwas wie START n = node:index_name(property_name = value)
schreiben und sofort damit beginnen, das Diagramm aus dem indizierten Knoten mit der Eigenschaft 'property_name' auszulesen, oder?
Also, sollten Sie diese Einheit:
@ToString
@NodeEntity(label = "Event")
@NoArgsConstructor
public class Event{
public Event(String eventName, LocalDate dateTime){
this.name = eventName;
this.date = dateTime;
}
public Event(Long id, String eventName, LocalDate dateTime){
this(eventName, dateTime);
this.id = id;
}
@Getter
@GraphId
private Long id;
@Getter
@Index(unique = true, primary = true)
@Property(name = "name")
private String name;
@Getter
@Property(name = "date")
@Convert(DateConverter.class)
private LocalDate date;
}
Wie Sie die String name
Eigenschaft sehen kann, ist mit @Index
kommentiert. Wie kann ich Cypher-Abfrage schreiben, um tatsächlich von dem Knoten mit name = 'etwas' zu starten? Wie lautet der Indexname? Oder macht Spring Data Neo4j 4.2.0.RELEASE es selbst beim Schreiben nur MATCH (event:Event {name = 'somehting'} ...
?
@Repository
public interface EventRepository extends Neo4jRepository<Event, String>{
Event findOne(String eventName);
}
Hier die repositry Klasse und wie Sie vielleicht sehe ich String
als die Art der ID des Unternehmens bin mit dem Repository verwaltet, so nehme ich an Frühling name
Eigenschaft der Event-Klasse verwendet eine Abfrage für Event findOne(String eventName);
Ja, tatsächlich. Sieh dir das an. Dies könnte http://grafhaware.com/neo4j/2015/01/16/neo4j-graph-model-design-labels-versus-indexed-properties.html helfen – pvpkiran