上下文
我已经为我的实体使用了@TypeName("Employee")
,所以我可以在DB中丢失完全限定的TypeName。它按预期工作。
问题
当Spring启动应用程序重新启动并且存在现有审核日志时,当我命中javers.findSnapshots()
时,我会得到TYPE_NAME_NOT_FOUND异常
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
- 然后我在
MyJaversSqlAutoConfiguration.javers()
中添加了scanTypeName(Employee.class)
观察
- 我注意到
MyJaversSqlAutoConfiguration.javers(connectionProvider)
没有被击中。但是,org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers()
在调试模式下会被击中。MyJaversSqlAutoConfiguration' gets hit. But not
MyJaversSqlAutoConfiguration.javers(ConnectionProvider ConnectionProvider(中的commitPropertiesProvider((和springSecurityAuthorProvider((`
经过仔细检查,我发现org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers()
没有@ConditionalOnMissingBean
,但commitPropertiesProvider()
和springSecurityAuthorProvider()
有
问题
有这个scanTypeName((的工作示例吗?还是应该添加@ConditionalOnMissingBean?
看起来在javers bean定义中缺少@ConditionalOnMissingBean
(在两个javers-spring-boot-starters
中(。
可以添加到JaversSqlAutoConfiguration.java
和JaversMongoAutoConfiguration.java
@Bean(name = "javers")
@ConditionalOnMissingBean
public Javers javers(ConnectionProvider connectionProvider) {
...
如果您贡献了PR,我们将合并它。