You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring Data JPA的@Query注解中使用配置文件属性值?

在@Query注解中使用配置属性值的实现方法

当然可以实现,直接通过Spring的SpEL表达式就能在@Query注解里引用application.properties中的配置值,具体步骤如下:

  1. 先在application.properties中添加存储过程名的配置:
sp.name=your_target_sp_name
  1. 修改Repository接口的@Query注解,用SpEL表达式读取配置:
@Repository
public interface SomeRep extends CrudRepository<MyClass, Long> {

    @Transactional
    @Query(value = "{call #{@environment.getProperty('sp.name')}(:param1, :param2, :param3, :param4)}", nativeQuery = true)
    List spErrorCall(String param1, String param2, Integer param3, Integer param4);
}

关键说明

这里的#{@environment.getProperty('sp.name')}是核心:

  • @environment是Spring上下文内置的Environment实例,专门用于读取配置属性
  • 整个SpEL表达式会在运行时被解析替换成配置文件中对应的存储过程名

补充方案(可选)

如果需要更灵活的管理,也可以先定义一个配置类注入属性,再通过SpEL引用:

@Component
public class SpConfig {
    @Value("${sp.name}")
    private String spName;

    public String getSpName() {
        return spName;
    }
}

然后在@Query中引用这个bean的属性:

@Query(value = "{call #{@spConfig.getSpName()}(:param1, :param2, :param3, :param4)}", nativeQuery = true)

内容的提问来源于stack exchange,提问作者Imam Sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:02:42