Контекст
Я использовал @TypeName("Employee")
для моих сущностей, так что я могу потерять полное TypeName в БД. Он работает так, как ожидалось.JaversSqlAutoConfiguration.javers() не вызывался
Выпуск
Когда приложение Spring загрузки перезапускается и там существующие журналы аудита, я получаю TYPE_NAME_NOT_FOUND исключение, когда я ударил javers.findSnapshots()
org.javers.common.exception.JaversException: TYPE_NAME_NOT_FOUND type name 'Employment' not found. If you are using @TypeName annotation, remember to register this class using JaversBuilder.scanTypeName(Class). See also https://github.com/javers/javers/issues/263
Мой подход до сих пор
- Я добавил JaversSqlAutoConfiguration.java, назовите его
MyJaversSqlAutoConfiguration
. - Затем я добавил
scanTypeName(Employee.class)
вMyJaversSqlAutoConfiguration.javers()
.
Наблюдение
- Я заметил
MyJaversSqlAutoConfiguration.javers(connectionProvider)
не попасть. Однакоorg.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers()
попадает в режим отладки. commitPropertiesProvider() и springSecurityAuthorProvider() вMyJaversSqlAutoConfiguration' gets hit. But not
MyJaversSqlAutoConfiguration.javers (ConnectionProvider connectionProvider) `.
При ближайшем рассмотрении, я обнаружил, что org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers()
не @ConditionalOnMissingBean
но commitPropertiesProvider()
и springSecurityAuthorProvider()
делать.
Вопрос
Есть рабочий пример этого scanTypeName() где-то или мы должны добавить @ConditionalOnMissingBean?