Redis
 sql >> Base de données >  >> NoSQL >> Redis

Causé par :java.lang.IllegalArgumentException :CONTAINING (1) :[IsContaining, Containing, contains] n'est pas pris en charge pour la dérivation de requête Redis - Redis

Ok, commençons par "Comment fonctionne Redis"

Redis travaille sur les hachages pour l'identification, ce qui permet de localiser plus rapidement l'enregistrement. @Indexed est également haché et stocké pour localiser plus rapidement l'enregistrement

Donc, par défaut pour MiddleName, la requête "contain" ne fonctionnera pas car le hachage pour la chaîne "Test" ne sera pas contenu dans le hachage pour la chaîne "TestUser".

Mais ExampleMatcher est là à la rescousse.

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

Solution pour la recherche de nom de rôle sur l'objet de rôle est relativement simple :utilisez cette requête

userRepository.findByRoleRoleName("ADMIN"))(En gros supprimer le trait de soulignement)

Et la bonne nouvelle est qu'il peut être combiné avec l'ExampleMatcher ci-dessus .

Discutons-en si vous avez un doute.

Référence utile pour la recherche de nom de rôle :interroger des objets imbriqués dans Redis à l'aide de Spring Data