У меня весенний загрузочный проект, работающий на базе данных mysql.Чтобы зашифровать какой-то столбец, я использовал функции mysql aes_encrypt, aes_decrypt и сохранил свой secret_key в файле свойств.Теперь, чтобы сделать некоторый запрос к базе данных, я должен использовать в crudrepository некоторый собственный запрос, подобный этому.
@Query(value = "select * from a_table at where AES_DECRYPT(at.column1, +StaticClass.KEY+)= 'ABC'", nativeQuery = true)
public List<A>findByParameter();
Я получаю эту ошибку «Значение атрибута аннотации Query.value должно быть константным выражением»
Но свойство KEY уже является экземпляром свойства FINAL, таким образом
public class StaticClass {
static {
Properties prop = new Properties();
InputStream input;
try {
input = new FileInputStream("application.properties");
prop.load(input);
} catch (IOException e) {
logger.error("Error");
}
if(prop.getProperty("property1")==null) {
logger.error("property not found");
}
KEY=prop.getProperty("property1", "");
}
public static final String KEY;
Одним из решений является сохранение ключа в коде, но мне нужно сохранить ключ в файле свойств.Как можно решить эту проблему?
Обновлено 1 Я пробовал также таким образом
public class StaticClass {
@Value(value="property1")
public static final String KEY;
}