Javers Diff and Spring



我有一个简单的Spring Boot 2.5.7 JPA应用程序,希望在一些实体之间进行审计差异

所以我的pom.xml包含这个依赖

<dependency>
<groupId>org.javers</groupId>
<artifactId>javers-spring-boot-starter-sql</artifactId>
<version>6.5.1</version>
</dependency>

我在应用中尝试了配置

javers:
algorithm: levenshtein_distance
dialect: POSTGRES

我创建了bean

@Bean
public Javers javers() {
return JaversBuilder.javers()
.withListCompareAlgorithm(ListCompareAlgorithm.LEVENSHTEIN_DISTANCE)
.build();
}

我还尝试添加了这个注释-JaversSpringDataAuditable

我的服务等级

@Service
@RequiredArgsConstructor
public class TestService {
private final Javers javers;
}

我只想知道这两个实体之间的区别https://javers.org/documentation/diff-configuration/

但我一直得到相同的错误

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.javers.repository.sql.DialectName]: Factory method 'javersSqlDialectName' threw exception; nested exception is java.lang.ClassCastException: class jdk.proxy2.$Proxy204 cannot be cast to class org.hibernate.engine.spi.SessionFactoryImplementor (jdk.proxy2.$Proxy204 is in module jdk.proxy2 of loader 'app'; org.hibernate.engine.spi.SessionFactoryImplementor is in unnamed module of loader 'app')
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
... 62 common frames omitted
Caused by: java.lang.ClassCastException: class jdk.proxy2.$Proxy204 cannot be cast to class org.hibernate.engine.spi.SessionFactoryImplementor (jdk.proxy2.$Proxy204 is in module jdk.proxy2 of loader 'app'; org.hibernate.engine.spi.SessionFactoryImplementor is in unnamed module of loader 'app')
at org.javers.spring.boot.sql.JaversSqlAutoConfiguration.javersSqlDialectName(JaversSqlAutoConfiguration.java:56)
at org.javers.spring.boot.sql.JaversSqlAutoConfiguration$$EnhancerBySpringCGLIB$$e6ec8ead.CGLIB$javersSqlDialectName$0(<generated>)
at org.javers.spring.boot.sql.JaversSqlAutoConfiguration$$EnhancerBySpringCGLIB$$e6ec8ead$$FastClassBySpringCGLIB$$466a8b80.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
at org.javers.spring.boot.sql.JaversSqlAutoConfiguration$$EnhancerBySpringCGLIB$$e6ec8ead.javersSqlDialectName(<generated>)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
... 63 common frames omitted

为什么要自己创建Javers bean?javers-spring-boot-starter-sql为您创建所有Javers的bean,并设置适当的SQL方言。尝试切换到由Javers的启动器创建的默认Javers Spring配置。

最新更新