2016-04-19 10 views
0

Bitte helfen Sie mit dieser Abfrage:Federdaten neo4j versteht Punkt '.' in Parametern

@Query("MATCH (n:User{userId:1})--(friends) return friends order by {type}") 
Iterable<Map<String, Object>> getLastFriendsByLevel(@Param("userId") long userId, @Param("type") String type); 

Wenn type = "friends.level", wird das Ergebnis nicht von Level geordnet wie erwartet. Es scheint, Ordnung funktioniert nicht, wenn der Parameter "type" "." Enthält.

Was ist los?

+0

Sie können Knoten oder Beziehungseigenschaftsschlüssel nicht parametrieren, Sie müssen 'freundes.level' in die Abfrage selbst schreiben –

+0

Danke. Was ist mit @Query ("MATCH (n: Benutzer {userId: 1}) - (Freunde) geben Freunde Reihenfolge von Freunden. {Typ}") Iterable> getLastFriendsByLevel (@Param ("userId") lange userId, @Param ("type") String-Typ) es funktioniert auch nicht, wenn type = "level"? Oder gibt es eine andere Möglichkeit, Parameter in der Bestellklausel zu übergeben? –

+0

Ihre Frage ist in ihrem aktuellen Zustand schwer zu verstehen. Sehen Sie [wie Sie ein minimales, vollständiges und überprüfbares Beispiel erstellen] (http://stackoverflow.com/help/mcve) und bearbeiten Sie Ihre Frage. – buczek

Antwort

0

Dies könnte für Sie arbeitet:

@Query("MATCH (n:User{userId: {userId}})--(friends) return friends order by friends[{key}]") 
Iterable<Map<String, Object>> getLastFriendsByLevel(@Param("userId") long userId, @Param("key") String key); 

Diese Abfrage tatsächlich die userId Parameter verwendet, und es verwendet den key Parameterwert (zum Beispiel "Ebene") zu ORDER BY dass friends Schlüsseln.

+0

Es funktioniert. Vielen Dank für den perfekten ungewöhnlichen Vorschlag. Es spart viel Zeit. –

+0

Bitte denken Sie daran, immer [Akzeptieren] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) die Antwort, die am besten für Sie funktioniert. – cybersam

Verwandte Themen