1
私はMongoRepository :: findAll()メソッドをオーバーライドして、カスタム@Query
を定義しようとしています。私はSpEL JPA Query support docsに従って、MongoRepositoryに同様のロジックを持たせて、ユーザーの役割をチェックし、承認されたレコードを取得するための動的クエリを作成します。Spring SpELのMongoDB正規表現文字をエスケープする - SpelParseExceptionを取得する
私はMongoRepositoryを拡張して、私のBlogRepositoryで、次の方法のセットアップました:以下のmongoクエリの実行として
org.springframework.expression.spel.SpelParseException: EL1049E:(pos 31): Unexpected data after '.': 'div(/)'
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.raiseInternalException(InternalSpelExpressionParser.java:988)
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.eatDottedNode(InternalSpelExpressionParser.java:407)
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.maybeEatNode(InternalSpelExpressionParser.java:360)
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.eatPrimaryExpression(InternalSpelExpressionParser.java:345)
at org.springframework.expression.spel.standard.InternalSpelExpressionParser.eatUnaryExpression(InternalSpelExpressionParser.java:337)
:私は、このメソッドから次のエラーを取得する
@Query("{ user_id : ?#{ hasRole('ROLE_ADMIN') ? /./ : principal.userId } } ")
@Override
Page<Blog> findAll(Pageable pageable);
をSpELがそれを解析しようとしないように、私は/./
文字をエスケープする必要があると思います。
{ 'user_id' : /./ }
私はSPELのエスケープ文字を見つけたが、次のオプションで演奏し、まだ解析例外の似たようなものが来ていることができませんでした:
'/./'
#{/./}
- SpeIでwraping表現.
/.*.*/
私を助けてもらえますか?