type_name_not_found - (Javers , Spring-boot)

type_name_not_found - (Javers , Spring-boot)

使用 javers-core 3.10.2javers-spring-boot-starter-sql 3.10.2 javers 最初效果很好。但是在重新启动 spring boot 应用程序后出现以下错误。

JaversException TYPE_NAME_NOT_FOUND: type name 'Person' not found. If you are using @TypeName annotation, remember to register this class using JaversBuilder.withPackagesToScan(String) or JaversBuilder.scanTypeName(Class)] with root cause

错误消息说明了您必须执行的操作,请按照此处 https://javers.org/documentation/spring-boot-integration/#javers-configuration-properties

中所述在您的 application.yml 中使用 javers.packagesToScan 属性
  • 默认情况下 javers 存储完整的包路径(com.app.model.Person) 作为我们存储审核的模型名称 trails.Which 可能 在代码重构期间更改。因此,在获取审核日志时,我们得到 错误 TYPE_NAME_NOT_FOUND 因为旧路径仍然存在 javers 表。
  • 为了避免这种情况,我们可以使用两种策略:

  • 对模型使用@Typescan("Person")注解class并设置 javers.packagesToScan=com.app.model,com.app.doc.model 在 spring 属性文件

  • 或 运行 迁移所有 jv_* 表,将旧路径替换为新路径 路径