значение по умолчанию для переменной persistence.xml, установленной переменной среды - PullRequest
0 голосов
/ 21 февраля 2019

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 "установлено для проверки.

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