Как получить конкретное значение свойства из файла .properties в методе интерфейса Spring Data Repository @Query - PullRequest
0 голосов
/ 06 ноября 2018

Я могу получить значение свойства в классах 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")

Вместо жесткого кодирования имен баз данных, т. Е. Db1 и db2 здесь, я должен получить их из файла свойств.

как получить значение свойства в аннотации @Query в репозитории Spring Data JPA?

1 Ответ

0 голосов
/ 06 ноября 2018

Я не знаю, возможно ли это, но если нет, вы можете рассмотреть этот подход:

Вместо непосредственного использования свойств в @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);
    }
}

Это всего лишь пример. Но я верю, что это может быть полезно.

Счастливого взлома :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...