Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Verursacht durch:java.lang.IllegalArgumentException:CONTAINING (1):[IsContaining, Containing, Contains]wird für Redis-Abfrageableitung nicht unterstützt – Redis

Ok, fangen wir mit "So funktioniert Redis"

an

Redis arbeitet an Hashes für die ID, was beim schnelleren Auffinden von Datensätzen hilft. @Indexed wird ebenfalls gehasht und gespeichert, um den Datensatz schneller zu lokalisieren

Standardmäßig funktioniert die „Contain“-Abfrage für MiddleName also nicht, da der Hash für die „Test“-Zeichenfolge nicht im Hash für die Zeichenfolge „TestUser“ enthalten ist.

Aber ExampleMatcher ist hier, um zu retten.

Quelle:https://docs.spring.io/spring-data/redis/docs/2.1.2.RELEASE/reference/html/#query-by-example

Lösung für die RoleName-Suche im Rollenobjekt ist relativ einfach:Verwenden Sie diese Abfrage

userRepository.findByRoleRoleName("ADMIN")(Grundsätzlich den Unterstrich entfernen)

Und die gute Nachricht ist, dass es mit dem obigen ExampleMatcher kombiniert werden kann .

Lassen Sie uns diskutieren, wenn Sie Zweifel haben.

Hilfreiche Referenz für die RoleName-Suche:Abfrage verschachtelter Objekte in Redis mit Spring Data