JaversException COMMITTING_TOP_LEVEL_VALUES_NOT_SUPPORTED - PullRequest
0 голосов
/ 14 апреля 2020

Я использую Javers для аудита в своем приложении, разработанном с использованием Spring boot и Mon go DB. Но когда я включаю аудит в PolicyDocumentRepository , я получаю « JaversException COMMITTING_TOP_LEVEL_VALUES_NOT_SUPPORTED: фиксация значений ValueType верхнего уровня, таких как« PolicyDocument », не поддерживается. Вы можете зафиксировать только экземпляр * Entity или ValueObject».

Класс, аннотированный как @ Document , расширяет базовый класс, следующим является исходный код.

Репозиторий

@JaversSpringDataAuditable
public interface PolicyDocumentRepository extends MongoRepository<PolicyDocument, String> {
}

Базовый класс

@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@Value
public class PolicyDocumentBase {

@Id
private String policyId;

// some other properties
}

Дочерний класс

@Document(collection = "policyDocuments")
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class PolicyDocument extends PolicyDocumentBase {

private String status;

// some other properties
}

Трассировка стека исключений

JaversException COMMITTING_TOP_LEVEL_VALUES_NOT_SUPPORTED: Committing top-level ValueTypes like 'PolicyDocument' is not supported. You can commit only Entity or ValueObject instance.
at org.javers.core.JaversCore.assertJaversTypeNotValueTypeOrPrimitiveType(JaversCore.java:96)
at org.javers.core.JaversCore.commit(JaversCore.java:80)
at org.javers.spring.auditable.aspect.JaversCommitAdvice.commitObject(JaversCommitAdvice.java:66)
at java.util.Arrays$ArrayList.forEach(Unknown Source)
at java.util.Collections$UnmodifiableCollection.forEach(Unknown Source)
at org.javers.spring.auditable.aspect.springdata.AbstractSpringAuditableRepositoryAspect.lambda$onSave$0(AbstractSpringAuditableRepositoryAspect.java:31)
at java.util.Optional.ifPresent(Unknown Source)
at org.javers.spring.auditable.aspect.springdata.AbstractSpringAuditableRepositoryAspect.onSave(AbstractSpringAuditableRepositoryAspect.java:30)
at org.javers.spring.auditable.aspect.springdata.JaversSpringDataAuditableRepositoryAspect.onSaveExecuted(JaversSpringDataAuditableRepositoryAspect.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:626)
at org.springframework.aop.aspectj.AspectJAfterReturningAdvice.afterReturning(AspectJAfterReturningAdvice.java:66)
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy161.save(Unknown Source)
...