IN-Klausel mit Spring Data und Cassandra @Query

8

Ich versuche, eine Cassandra-Tabelle mit der IN-Klausel und der @Query-Annotation aus Spring Data abzufragen. Ich habe eine Tabelle mit einem Partitionsschlüssel von last_name und einem Clusterschlüssel von first_name.

Ich habe diese Abfrage funktioniert

%Vor%

und ich möchte etwas wie

machen %Vor%

Ich arbeite mit

%Vor%

Aber aus einer Reihe von Gründen (Code-Stil, Testen, ich schwöre, es gibt mehr) würde ich lieber @Query verwenden. Irgendwelche Ideen?

BEARBEITEN FÜR MEHR INFO!

Die Übergabe in einem Array, Set oder einer Liste gibt Caused by: java.lang.IllegalArgumentException: encountered unsupported query parameter type [class [Ljava.lang.String;] in method public abstract

zurück

Auch versucht:

%Vor%

Nichts gefunden, die Bibliothek sucht nach einer einzelnen Person mit dem angegebenen Namen ('Joe,Jim')

%Vor%

Nichts gefunden, die Anfrage wurde gemerkt und endet ('''Joe'',''Jim''')

%Vor%

Nichts gefunden, die Anfrage wurde gemerkt und endet ('Joe'',''Jim')

    
Bill H 02.04.2015, 16:39
quelle

2 Antworten

9

Sie müssen Armschienen verwenden, wenn Sie IN verwenden.

%Vor%

Aber es gibt einige andere Probleme in Ihrem Code. Ich änderte sie alle zu einem guten Kodierungsstandard wie unten. Einschließlich meiner persönlichen Favoriten der Verwendung von benannten Parametern.

%Vor%     
Faraj Farook 03.04.2015 16:01
quelle
2

Es scheint nicht möglich zu sein!

Ich habe den Quellcode von spring-data-cassandra-1.3.2.RELEASE.jar .

Die zulässigen Datentypen von Parametern in der Abfrage-Methode sind %Code%.

Sie können in

gefunden werden %Vor%

Wenn wir andere Datentypen übergeben, wird String.class, CharSequence.class, char.class, Character.class, char[].class, long.class, Long.class, boolean.class, Boolean.class, BigDecimal.class, BigInteger.class, double.class, Double.class, float.class, Float.class, InetAddress.class, Date.class, UUID.class, int.class are Integer.class org.springframework.data.cassandra.repository.query.CassandraQueryMethod.verify(Method method, RepositoryMetadata metadata) ausgeben.

    
Visruth 08.02.2016 14:50
quelle