Хотелось бы запустить Configuration.generateSchemaUpdateScriptList()
. Однако Hibernate настроен с использованием LocalContainerEntityManagerFactoryBean
. Как мне добраться до объекта Configuration
из экземпляра LocalContainerEntityManagerFactoryBean
? Или есть лучший способ достичь этого?Весна/Спящий режим: как получить конфигурацию из LocalContainerEntityManagerFactoryBean
ответ
ОК это была двухдневная стена против головного марафона, но в конце концов я нашел решение, хотя оно несколько хакерское.
Я кулачок по Hibernate's Integrator
, о котором почти не упоминается в документах. Более подробную информацию об этом можно найти в связанных проблемах Hibernate JIRA HHH-5562 и HHH-6081. Однако, если вы знаете ключевое слово, вы можете собрать достаточную информацию для рабочего примера от a few sources. Тем не менее, это не очень хорошо работает с Spring, проблема, упомянутая в этом SO question.
Таким образом, окончательное решение было немного хаком, но это работает:
public class GetConfigIntegrator implements Integrator {
private static Configuration configuration;
public static Configuration getConfiguration() {
return configuration;
}
@Override
public void integrate(Configuration configuration, /* ... */) {
GetConfigIntegrator.configuration = configuration;
}
// Empty Integrator implementation...
}
Как можно видеть, это глупо интегратор просто хранит конфигурацию в статической переменной, поэтому она может быть доступна позже. Не идеальный, но не сталкиваясь с никакими вариантами, один радуется нахождению такого пути.
Для регистрации интегратора, следующий файл должен быть создан, с одной строки на класс интегратора (полное название), например, так:
# src/main/resources/META-INF/services/org.hibernate.integrator.spi.Integrator:
<full package name>.GetConfigIntegrator
- 1. Получить конфигурацию из appsettings.json
- 2. Почему я могу получить объект EntityManagerFactory из определения компонента LocalContainerEntityManagerFactoryBean?
- 3. Как фильтровать запросы, проверенные LocalContainerEntityManagerFactoryBean?
- 4. Как получить конфигурацию электронной почты из БД?
- 5. Как правильно использовать LocalContainerEntityManagerFactoryBean с JPA
- 6. Использование LocalContainerEntityManagerFactoryBean для создания сеанса?
- 7. Как получить оптимальную конфигурацию RT
- 8. Как получить Сервисный режим из файла WSDL?
- 9. Получить конфигурацию приложения из записей базы данных
- 10. Получить конфигурацию исполнения gradle из файла Java
- 11. Получить всю конфигурацию из пространства имен
- 12. Получить конфигурацию Hibernate весной
- 13. Режим Spark cluster на Mesos: как передать конфигурацию исполнителю?
- 14. Получить конфигурацию пряжи из командной строки
- 15. Как получить значение Режим
- 16. Sidekiq: Получить конфигурацию
- 17. Как получить текущую конфигурацию на SolrCloud
- 18. Как получить режим передачи hdd?
- 19. Spring Data Rest: "Невозможно настроить LocalContainerEntityManagerFactoryBean из @EntityScan"
- 20. Получить конфигурацию FlexForm в TypoScript
- 21. Как с помощью инъекции зависимостей получить конфигурацию из нескольких источников?
- 22. Как получить конфигурацию сборки («выпуск», «отладка») из операции InvokeProcess
- 23. Как получить конфигурацию источника данных для spring из persistence.xml?
- 24. Как получить конфигурацию индексного шаблона из elasticsearch/Kibana?
- 25. Не удалось создать экземпляр LocalContainerEntityManagerFactoryBean из-за ошибки в @NameQueries?
- 26. Как перенести конфигурацию twitter из контроллера? (Rails)
- 27. Spring @Transaction не работает с LocalContainerEntityManagerFactoryBean
- 28. LocalContainerEntityManagerFactoryBean не может быть преобразован в EntityManagerFactory
- 29. Как перезагрузить конфигурацию Jenkins из командной строки?
- 30. Как получить режим в массиве
Почему вам нужно запустить 'Configuration.generateSchemaUpdateScriptList()' ? –
Очевидно, потому что я хочу получить идею Hibernate о том, как обновить схему, чтобы она соответствовала объектам, но делать с ней что-то еще, а не просто применять ее как есть. –