sql >> Database >  >> NoSQL >> Redis

Veroorzaakt door:java.lang.IllegalArgumentException:CONTAINING (1):[IsContaining, Containing, Bevat] wordt niet ondersteund voor het afleiden van redis-query's - Redis

Ok laten we beginnen bij "Hoe Redis werkt"

Redis werkt aan hashes voor ID, wat helpt bij een snellere locatie van de record.@Indexed wordt ook gehasht en opgeslagen voor snellere lokalisatie van de record

Dus standaard voor MiddleName werkt de "bevatten"-query niet, omdat hash voor "Test"-tekenreeks niet wordt opgenomen in Hash voor tekenreeks "TestUser".

Maar ExampleMatcher is hier om te redden.

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

Oplossing voor het zoeken naar RoleName op rolobject is relatief eenvoudig:gebruik deze zoekopdracht

userRepository.findByRoleRoleName("ADMIN")(Verwijder in wezen het onderstrepingsteken)

En goed nieuws is dat het kan worden gecombineerd met de bovenstaande ExampleMatcher .

Laten we bespreken als je twijfelt.

Nuttige referentie voor het zoeken naar RoleName:Zoek geneste objecten in Redis met behulp van Spring Data



  1. Spring data mongo gebruik OR in Query

  2. ServiceStack Entiteiten Id veldnaam

  3. Mongodb findAndModify node js

  4. Hoe het aantal bijwerkdocumenten in mongodb te beperken