Java 在Spring SpEL中转义MongoDB正则表达式字符-获取SpelParseException
我试图重写MongoRepository::findAll()方法来定义自定义的Java 在Spring SpEL中转义MongoDB正则表达式字符-获取SpelParseException,java,spring,mongodb,spring-boot,spring-el,Java,Spring,Mongodb,Spring Boot,Spring El,我试图重写MongoRepository::findAll()方法来定义自定义的@Query。我遵循MongoRepository中的类似逻辑来检查用户角色,并创建一个动态查询来获取授权记录 我在我的BlogRepository中设置了以下方法,它扩展了MongoRepository: @Query("{ user_id : ?#{ hasRole('ROLE_ADMIN') ? /./ : principal.userId } } ") @Override Page<Blog>
@Query
。我遵循MongoRepository中的类似逻辑来检查用户角色,并创建一个动态查询来获取授权记录
我在我的BlogRepository中设置了以下方法,它扩展了MongoRepository:
@Query("{ user_id : ?#{ hasRole('ROLE_ADMIN') ? /./ : principal.userId } } ")
@Override
Page<Blog> findAll(Pageable pageable);
当下面的mongo查询运行并重新运行所需的值时,我相信,我只需要转义
/./
字符,这样SpEL就不会试图解析它
{ 'user_id' : /./ }
我找不到SpEL的转义字符,但使用了以下选项,仍然会出现类似的解析异常:
'/./'
--用SpEL表达式包装#{/}
/.*/
@Query(" ?#{ hasRole('ROLE_ADMIN') ? '{}' : {'user_id' : principal.userId } } ")
也许你可以使用像这样的转义函数
%?#{escape(...)}
%?#{escape(...)}