Ich habe eine "Role" -Tabelle mit einer "Name" -Spalte. Ich muss alle Rollen bekommen, wo Namen entweder "Rolle1" oder "Rolle2" sind. Die Rollenrepositorymethode sieht wie folgt aus:Spring Data IN-Klausel fügt zusätzliche Klammern hinzu
Set<Role> findByNameIsIn(Set<String> roleNames);
Meine Datenbank enthält nur 'role1'. Die Anforderung, die erzeugt wird, sieht so aus:
SELECT ID, NAME FROM ROLE WHERE (NAME IN ((?,?)))
bind => [role1, role2]
Bitte beachten Sie die doppelten Klammern um die Parameter. Ergebnismenge ist leer. Wenn ich diese Abfrage manuell über die h2 Konsole durchführe - auch keine Ergebnisse. Die folgende Abfrage funktioniert:
SELECT ID, NAME FROM ROLE WHERE (NAME IN ('role1', 'role2'))
Mein Satz enthält genau zwei Elemente. Sets sollten als Parametertyp unterstützt werden. Siehe: https://dzone.com/refcardz/core-spring-data
Und schließlich die Frage: Was vermisse ich?
Welche Anbieter und Datenbankpersistenz verwenden Sie? Es gab ein paar Bugs für verschiedene in diesem Bereich. –
EclipseLink + H2 eingebettete Datenbank – Yuriy
Gebrochen seit 2011 ... https://bugs.eclipse.org/bugs/show_bug.cgi?id=349477 –