2016-12-07 7 views
1

In der alten Version, SDN3, kann ich findById (List ID) verwenden, aber nach dem Upgrade auf SDN4, kann ich diese Funktion nicht erneut verwenden, immer leer zurück.SDN4 - Kann nicht finden mit ID ID

Das ist meine Beispielklasse:

@NodeEntity 
public class Right{ 

    @GraphId 
    Long graphId; 

    String id; //random generated UUID 

    String name; 

    //Properties & Constructor 
} 

Und dann habe ich RightRepository, dass dieser Code enthält:

public interface RightRepository extends GraphRepository<Right> { 
    List<Right> findById(List<String> id); 
} 

Statt Schleife Verwendung pro ID zu bekommen, muß ich Repository nur einmal anrufen , und erhalten Sie die Liste (ohne findAll())

Wird SDN4 nicht bereits unterstützt? Gibt es eine andere Lösung?

+0

Könnten Sie die Methode mit einer benutzerdefinierten Abfrage versuchen, mit Anmerkungen versehen. Beispiel '@Query (" MATCH (n: Richtig) WHERE n.ID IN {rightIds} RETURN n ") Liste findRightById (@Param (" rightIds ") Liste rightIds);' – troig

+0

Ja, es funktioniert mit benutzerdefinierten Abfrage . Aber vor dem Upgrade auf SDN4 kann ich diese Methode mit SDN3 verwenden. –

+1

Ich denke, es ist der einzige Weg, um es im Moment zu erreichen. Ich werde auf andere Antworten warten – troig

Antwort

1

Wie ich in einem Kommentar und nach einer weiteren Untersuchung posten, denke ich, dass eine benutzerdefinierte Abfrage der einzige Weg ist, Ihre Anforderung im Moment zu erfüllen. Dies funktioniert:

@Query("MATCH (n:Right) WHERE n.id IN {rightIds} RETURN n") 
List<Right> findRightById(@Param("rightIds") List<String> rightIds); 

Hoffe, es hilft

+1

Für jetzt denke ich, diese Antwort ist der einzige Weg, um meine Frage zu erfüllen. Wie auch immer, danke @troig –

+0

Während auf neues Update warten, keine andere Antwort außer diesem. hahaha. Vielen Dank –