Ошибка при обновлении объекта с помощью Hibernate Entity Listener - PullRequest
1 голос
/ 09 июля 2019

Я создал в своем приложении одну AuditorAware, чтобы при сохранении сущности он автоматически устанавливал зарегистрированного пользователя и дату с аннотациями @CreatedBy и @CreatedDate, поэтому при сохранении сущности работает нормально, но при попытке ОБНОВИТЬ я получил java.lang.StackOverflowError

мой класс

@Component
@Slf4j
public class SecurityAuditorAware implements AuditorAware<Usuario> {

    @Autowired
    private UsuarioRepository usuarioRepository;
    @Override
    public Optional<Usuario> getCurrentAuditor() {

        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();

        if (authentication == null || !authentication.isAuthenticated()) {
            return Optional.empty();
        }

        return usuarioRepository.findByLogin(((User)authentication.getPrincipal()).getUsername());
    }
}

Сначала я попытался загрузить сущность с помощью myRepository.findById(id), создать пустое и установить существующий идентификатор, а затем в обоих myRepository.save()

java.lang.StackOverflowError: null
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_211]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[na:1.8.0_211]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_211]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:411) ~[na:1.8.0_211]
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_211]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_211]
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153) ~[spring-tx-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:120) ~[spring-data-jpa-2.1.8.RELEASE.jar:2.1.8.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61) ~[spring-data-commons-2.1.8.RELEASE.jar:2.1.8.RELEASE]
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) ~[spring-aop-5.1.7.RELEASE.jar:5.1.7.RELEASE]
    at com.sun.proxy.$Proxy145.findByLogin(Unknown Source) ~[na:na]
    at br.com.anoregrn.rtdpjback.audit.SecurityAuditorAware.getCurrentAuditor(SecurityAuditorAware.java:32) ~[classes/:na]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...