Я использую liquibase для сброса базы данных между тестами. Начиная со стандартного весеннего запуска в начале моих тестов, он вставляет данные с правильным TZ. Когда я запускаю его вручную, он применяет другой TZ.
У меня есть application.properties, настроенные с spring.jpa.properties.hibernate.jdbc.time_zone=UTC
и включенная жидкость. При вставке данных времени в столбец времени он вставляет 12:00:00
без проблем.
Когда я пытаюсь перезапустить liquibase между моими тестами, все в порядке, за исключением того, что время вставляется, когда текущий локальный TZ (+01: 00) дает мне 13:00:00
вместо этого.
@Autowired
SpringLiquibase liquibase;
public void clean() {
liquibase.setShouldRun(true);
liquibase.setDropFirst(true);
liquibase.afterPropertiesSet();
}
Существует метод setChangelogProperties
, но я не могу найти документацию для каких-либо вещей, связанных с TZ.
Я пытался повторно ввести источник данных, пробовал ВРЕМЯ, ВРЕМЯ БЕЗ ВРЕМЕНИ, но безрезультатно.
При повторном запуске того же компонента SpringLiquibase, выполняемого во время инициализации приложения, я ожидал, что та же информация TZ и любая другая конфигурация будут поддерживаться и использоваться повторно.
UPDATE
После пробного использования множества различных настроек часового пояса во время тестов единственное, что сработало, это -Duser.timezone = UTC из командной строки.
Установка этого значения как System.setProperty("-Duser.timezone","UTC")
как можно раньше, а также перед повторным запуском ликвазы не оказывает никакого влияния.
Есть ли способ, которым я могу заставить пружину установить это, прежде чем он загрузит все?
Странно, что первый запуск через пружину в порядке, но последующие, похоже, теряют настройку часового пояса.
ОБНОВЛЕНИЕ 2
Установка TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
либо никогда не поднимается, либо происходит недостаточно рано.
Добавление следующего к моему тесту
static {
System.setProperty("UTC");
}
также, по-видимому, выполняется недостаточно рано или не распространяется должным образом на жидкостьбазу.
Определенно кажется, что SpringLiquibase работает по своим собственным правилам или что-то странное происходит с загрузкой драйвера