tl; dr: я хочу заполнить переменную в persistence.xml
переменной окружения или иметь предварительно определенное значение по умолчанию, если такой переменной окружения не существует.
Я хочуустановить схему по умолчанию Hibernate в моем файле persistence.xml динамически при запуске в Docker.Поэтому я добавил переменную в следующее свойство, которое можно установить с помощью переменной среды:
<property name="hibernate.default_schema" value="${env.DB_SCHEME}"/>
Это прекрасно работает для среды докера, но для среды без докера мне нужен какой-то видзначение по умолчанию, которое вводится.
К сожалению, я не могу использовать что-то подобное, потому что это не поддерживается:
<property name="hibernate.default_schema" value="${env.DB_SCHEMA:my_default_scheme}"/>
Я также попытался добавить свойство env.DB_SCHEME
в свойства Mavenпроект, но таким образом он всегда использует значение из Maven, и я больше не могу переопределять его переменными среды.
Еще одна вещь, о которой я читал, - это использование параметра фильтрации из плагина ресурсов в Maven.Таким образом, я мог бы заменить переменную с заранее заданным значением.Но таким образом я должен выбрать профиль во время сборки, и невозможно изменить его во время выполнения.
Далее я попытался сделать это программно.Поэтому я взял entityManager моего модуля персистентности и проверил, установлена ли переменная окружения или нет.Если он был установлен (только при использовании среды докера), он должен был поместить ${env.DB_SCHEME}
в значение свойства.В противном случае он мог бы поместить в него ${DB_SCHEME}
, чтобы впоследствии свойство Maven могло перезаписать его.Но почему-то свойства не установлены.Возможно, код выполняется слишком поздно, потому что свойство hibernate.hbm2ddl.auto "установлено для проверки.