1

语境

我已经用于@TypeName("Employee")我的实体,所以我可以在 DB 中丢失完全限定的 TypeName。它按预期工作。

问题

当 Spring boot 应用程序重新启动并且存在现有的审计日志时,当我点击时出现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()在调试模式下会被击中。MyJaversSqlAutoConfiguration' gets hit. But notMyJaversSqlAutoConfiguration.javers(ConnectionProvider connectionProvider)中的 commitPropertiesProvider() 和 springSecurityAuthorProvider() 。

经过仔细检查,我发现org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javers()没有@ConditionalOnMissingBeanbut commitPropertiesProvider()and springSecurityAuthorProvider()do。

问题

在某处是否有此 scanTypeName() 的工作示例,或者我们应该添加@ConditionalOnMissingBean?

4

1 回答 1

0

看起来@ConditionalOnMissingBean在 javers bean 定义中缺少(在两者中javers-spring-boot-starters)。

它可以添加到JaversSqlAutoConfiguration.javaJaversMongoAutoConfiguration.java

@Bean(name = "javers")
@ConditionalOnMissingBean
public Javers javers(ConnectionProvider connectionProvider) {
...

如果您贡献 PR,我们将合并它。

于 2016-09-05T21:48:25.723 回答