在the official guide之后,将此@Query添加到仓库中后,Spring崩溃,Property or field 'principal' cannot be found on null
:
@Query("select count(e) from #{#entityName} e where e.user_id = #{principal?.id}")
在我看来,这似乎是一个循环依赖问题:就我而言,UserDetailsServiceImpl需要一个JpaRepository。生成此存储库后,Spring会尝试评估本身依赖于安全性配置(SecurityEvaluationContextExtension
bean)的@Query。安全配置取决于UserDetailsService。和。所以。上。
我尝试了多种方法来对此进行转义(@DependsOn,删除了@EnableJpaRepository,移动了配置),但没有成功。由于我刚接触Spring,所以我认为我做的事情确实很愚蠢,所以我问你:
这个星座-取决于JpaRepo的Spring Security Data与UserDetailsService的集成是完全可能的吗?我可能做错了什么?
答案 0 :(得分:0)
愚蠢的是:我忘记了表示查询参数的问号。
@Query(“从#{#entityName} e中选择计数(e),其中e.user_id = ?#{principal?.id}“)