如何在spring数据@Query

时间:2018-04-13 12:29:41

标签: spring spring-data-jpa

我无法将application.yml中的属性注入spring数据@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);
}

根据this blog,可以注入一个春天校长的属性,这与我想做的事情没有什么不同。

有关此的任何提示吗?

1 个答案:

答案 0 :(得分:1)

我应该在此之后不久就不再提问并自己回答......这不是故意的。

上述博客包含了解决方案。加上这个:

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);
    }
}

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