代码之家  ›  专栏  ›  技术社区  ›  Krish

如何从Spring数据存储库接口方法@Query中的.properties文件中获取特定的属性值

  •  1
  • Krish  · 技术社区  · 6 年前

    我可以在Spring类中获得如下属性值:

    @Value("${database.name}")
    private String databaseName;
    

    @Query(value="select t1.* FROM db1.table1 t1 INNER JOIN db2.table2 t2 ON t2.t1_id1 = t1.id1")
    

    如何在springdatajpa存储库的@Query注释中获取属性值?

    1 回复  |  直到 6 年前
        1
  •  1
  •   ikos23    6 年前

    我不知道是否可行,但如果不行,你可以考虑这种方法:

    而不是在存储库的 @Query .properties .

    public interface UserRepository extends JpaRepository<User, Long> {
    
      // query with param
      @Query("select u from User u where u.lastname = :lastname")
      User findByLastname(@Param("lastname") String lastname);
    
    }
    

    那么,假设你有一些 Service Controller 你需要使用你的 Repository

    @Service
    public class UserService {
    
        // this comes from .properties
        @Value("${user.lastName}")
        private String userLastName;
    
        @Autowired
        private UserRepository userRepository;
    
        public User getUser() {
            // you pass it as param to the repo method which
            // injects it into query
            return userRepository.findByLastname(userLastName);
        }
    }
    

    这只是一个例子。但我相信它可能有用。