如何在春季数据@Query中使用属性



我无法设法将属性从 application.yml 注入到弹簧数据@Query。

以下情况会导致EL1008E错误:

public interface MyRepository extends JpaRepository<MyEntity, Long> {
    @Query("select e from MyEntity e where e.foo = :foo and e.env= ?#{env}")
    MyEntity findByFoo(@Param("foo") String foo);
}

根据这个博客,可以注入弹簧本金的属性,这与我想做的没有太大区别。

对此有什么提示吗?

我真的应该停止提问,并在不久之后自己回答......这不是故意的。

提到的博客包含解决方案。添加这个:

public class PropertyEvaluationContextExtension extends EvaluationContextExtensionSupport {
    private final MyProps p;
    public PropertyEvaluationContextExtension(final MyProps p) {
        this.p= p;
    }
    @Override
    public String getExtensionId() {
        return "foo";
    }
    @Override
    public MyProps getRootObject() {
        return this.p;
    }
}
@Configuration
public class PropertyConfig {
    private final MyProps p;
    public PropertyConfig(final MyProps p) {
        this.p= p;
    }
    @Bean
    EvaluationContextExtensionSupport propertyExtension() {
        return new PropertyEvaluationContextExtension(p);
    }
}

现在,MyProps的每个属性都可以通过SpEL访问。

最新更新