2016-05-22 6 views
0

Ich kann OrientDB nicht dazu bringen, ein OrientVertex oder ein oDocument mithilfe der Java-API zu persistieren. obwohl es funktioniert, wenn ich SQL und OCommand verwende.OrientDB kann einen Vertex nicht beibehalten, gibt ORID zurück, aber mit Nullvertex z. B. v (null) [# 3: 4]

versucht, einen Scheitel mit folg Code zu beharren

val factory: OrientGraphFactory = new OrientGraphFactory("plocal:localhost/database", "admin", "admin"); 
    val graph = factory.getTx 
    val oDocument: ODocument = UserEntityMapper.toODocument(user) 
    println("ODocument = = "+ oDocument) 
    val orientVertex = new OrientVertex(graph, oDocument) 
    println("BEFORE orientVertex = "+ orientVertex) 
    graph.commit() 
    println("AFTER orientVertex = "+ orientVertex) 

ich Debug-Ausdrucke als

oDocument = {Telefonnummer: 45435345, E-Mail: moses @ email.com, dateOfBirth: -766.198.800.000, nachName: Johnson, vorname: Moses, avatarURL: null, Logininfo: {providerID: Anmeldeinformationen, providerKey: [email protected]}, Benutzer-ID: a8d96be9-1d09-4e8f-bf8d-6a0d32e1e5aa}

VOR orientVertex = v (null) [ # 3: -2]

NACH dem orientVertex = v (null) [# 3: 4]

Wie Sie sehen können, ist der Scheitelpunkt null. Nichts bleibt bestehen. Ich bekomme eine ORID, die die Nummer der Clusterposition ändert.

Wenn ich wiederhole die die Cluster-Position speichern Nummer erhöht wird

VOR orientVertex = v (null) [# 3: -3]

NACH orientVertex = v (null) [# 3: 7]

Warum passiert das und wie kann ich das bitte beheben? Es gibt keine Ausnahmen, also kann ich nicht sagen, was falsch ist. Der Cluster/Tabelle für Benutzer existiert in der Datenbank mit allen rechten Feldern.

Ich verwende orientdb-community-2.2.0 und Scala.

grüße

+0

Tatsächlich ist die 'null' im' v (null) [# 3: 4] 'ist der Scheitelpunkt Klassenname, bedeutet dies nicht, der Scheitelpunkt ist' null ". Versuchen Sie, den Scheitelpunkt nach seiner ID zu holen, etwas wie 'graph.getVertex (" # 3: 4 ")', was bekommen Sie? – actual

+0

danke für die Antwort .. Ich habe versucht, was Sie vorgeschlagen und "v (null) [# 3: 4]" zurückgegeben wurde. – Tibs

+0

toll, dass du es aussortiert hast :) – actual

Antwort

0

Sortiert es endlich. Ich habe das ODocument ohne den Klassennamen instanziiert. In

UserEntityMapper.toODocument(user) 

ich tat das Äquivalent dieser

new ODocument(Map("name"->"john", "city" -> "London")) 

anstelle dieses

new ODocument("User").fromMap(Map("name"->"john", "city" -> "London")) 

So ist die DB die User-Klasse abholen nicht.

Dank actual für mich in der richtigen Richtung