2016-06-09 10 views
1

Ich habe eine Neo4j Extension erstellt. Es enthält meine eigene TransactionEventHandler. Manchmal führt die Ausführung des Verfahrens beforeCommit() zu UniquePropertyConstraintViolationKernelException. Es ist in Ordnung. Aber auf der Serverseite erhalte ich ResultProcessingException. Diese Ausnahme sieht zu verallgemeinert aus. Ich denke, es kann aus vielen Gründen geworfen werden, nicht nur im Falle einer Constraint-Verletzung. Meine Frage ist also, wie ich mit Constraint-Verletzungen auf der Server-Seite umgehen soll? Ich benutze SDN4.Wie wird Unique-Constraint-Verletzung in SDN4 richtig behandelt?

Edit 1: Alle Neo4j-ogm- * Versionen 2.0.3

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.neo4j</groupId> 
      <artifactId>neo4j-ogm-core</artifactId> 
      <version>2.0.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.neo4j</groupId> 
      <artifactId>neo4j-ogm-http-driver</artifactId> 
      <version>2.0.3</version> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 
aktualisiert

enter image description here

Antwort

2

Wenn Sie auf SDN sind 4.0, dann ist dies ein bekanntes Problem, dass die Ausnahme geworfen ist zu breit.

In SDN 4.1.1 haben wir eine CypherException eingeführt, die den zugrundeliegenden Neo4j-Fehlercode umschließt. Dieser Fehler wird bei Ausführung der Cypher-Ausführung einheitlich über alle 3 Treiber verteilt. Wenn Sie SDN 4.1.1 verwenden und diese Ausnahme nicht erhalten, ist es möglich, dass wir einen Bereich des Codes verpasst haben - bitte geben Sie raise a github issue mit Einzelheiten zur Reproduktion an.

Update: Realisiert, dass SDN 4.1.1 von OGM 2.0.1 abhängt, die eine CypherException erzeugt, aber die Ursache nicht umwickelt. Bitte überschreiben Sie neo4j-ogm-core und alle Treiberversionen bis 2.0.3 CypherException.getCode() sollten produzieren. Beachten Sie, dass die zugrunde liegende Ausnahme umbrochen wird, wenn Sie den eingebetteten Treiber verwenden. Aber über den HTTP-Treiber werden diese Informationen nicht empfangen und Sie erhalten nur die folgenden Informationen in der CypherException:

+0

Ja, es ist wahr. Nach der Aktualisierung von SDN auf 4.1.1 erhalte ich CypherException. Beschreibung enthält eine Nachricht wie folgt: "TransactionFailureException: Fehler beim Ausführen von Cypher Transaction.CouldNotCommit". Aber es ist mir immer noch unklar, wie ich die Art des Problems verstehen kann. Innerhalb der TransactionEventHandler.beforeCommit() erhalte ich 'ConstraintViolationException' mit einer eindeutigen Beschreibung. Aber auf der Serverseite kann ich nichts darüber sehen. –

+0

Bearbeitete meine Antwort – Luanne

+0

Danke! Eine solche Konfiguration verursacht jedoch ein anderes Problem. Ich habe die Versionen von 'neo4j-ogm-core' und' neo4j-ogm-http-driver' ersetzt, wie Sie gesagt haben. Und wenn ich versuche 'neo4jOperations.query (" CREATE CONSTRAINT ON (n: Ereignis) ASSERT n.uniqueId IST UNIQUE ", Collections.emptyMap());' Ich empfange "NoSuchMethodError" mit der folgenden Beschreibung: "HttpClientBuilder.setSSLContext (SSLContext) ". Es hat vorher funktioniert. –