Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有bean的entityListener中的无限循环_Java_Spring_Hibernate_Jpa_Listener - Fatal编程技术网

Java 带有bean的entityListener中的无限循环

Java 带有bean的entityListener中的无限循环,java,spring,hibernate,jpa,listener,Java,Spring,Hibernate,Jpa,Listener,我创建一个EntityListener来审核特定的实体。存储状态更改的历史记录。我用AutowireHelper注入bean。我明白了 这可以很好地注入存储库,但要调用任何存储库的任何函数,请返回AutowireHelper.autowire行 这是我的代码,EntityListener执行AutowireHelper.autowire,当涉及到“查找”方法时,返回autowire行: public class AuditListener { @Inject private U

我创建一个EntityListener来审核特定的实体。存储状态更改的历史记录。我用AutowireHelper注入bean。我明白了

这可以很好地注入存储库,但要调用任何存储库的任何函数,请返回AutowireHelper.autowire行

这是我的代码,EntityListener执行AutowireHelper.autowire,当涉及到“查找”方法时,返回autowire行:

public class AuditListener {

    @Inject
    private UserRepository userRepository;

    @Inject
    private ConfigurationRepository configurationRepository;

    @PreUpdate
    public void preUpdate(Object object) {
        //TODO: pre update
        AutowireHelper.autowire(this, this.userRepository, this.configurationRepository);

        //I need get bbdd entities
        List<Configuracion> config = this.configurationRepository.findAll();

        Foo foo = (Foo) object;
        System.out.println("Foo updated: " + foo.getId());
    }
}
公共类AuditListener{
@注入
私有用户存储库用户存储库;
@注入
私有配置存储库配置存储库;
@预更新
公共无效预更新(对象){
//TODO:预更新
AutowireHelper.autowire(this,this.userRepository,this.configurationRepository);
//我需要bbdd实体
List config=this.configurationRepository.findAll();
Foo-Foo=(Foo)对象;
System.out.println(“Foo更新:+Foo.getId());
}
}
我的错误:

无法提交JPA事务;嵌套异常是 javax.persistence.RollbackException:提交 事务处理12:43:25291信息[stdout](http-/0.0.0:8080-1)在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 12:43:25291信息[标准输出](http-/0.0.0:8080-1)在 invoke(NativeMethodAccessorImpl.java:57) 12:43:25291信息[标准输出](http-/0.0.0:8080-1)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 12:43:25291信息[标准输出](http-/0.0.0:8080-1)在 java.lang.reflect.Method.invoke(Method.java:601)12:43:25291信息 [stdout](http-/0.0.0:8080-1)在 org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 12:43:25291信息[标准输出](http-/0.0.0:8080-1)在 org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 12:43:25291信息[标准输出](http-/0.0.0:8080-1)在 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 12:43:25291信息[标准输出](http-/0.0.0:8080-1)在 org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:362)|

完整跟踪:

14:01:35393错误[stderr](http-/0.0.0:8080-1) org.springframework.transaction.TransactionSystemException:无法 提交JPA事务;嵌套异常是 javax.persistence.RollbackException:提交 事务处理14:01:35398错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:526) 14:01:35401错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757) 14:01:35405错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726) 14:01:35408错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.transaction.interceptor.TransactionSpectSupport.commitTransactionAfterReturning(TransactionSpectSupport.java:521) 14:01:35412错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.transaction.interceptor.TransactionSpectSupport.invokeWithinTransaction(TransactionSpectSupport.java:291) 14:01:35415错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 14:01:35419错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.aop.framework.ReflectiveMethodInvocation.procement(ReflectiveMethodInvocation.java:179) 14:01:35422错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 14:01:35425错误[stderr](http-/0.0.0:8080-1)位于 com.sun.proxy.$Proxy195.save(未知源)14:01:35428错误 [stderr](http-/0.0.0:8080-1)在 es.company.project.web.controller.foo.FooController.save(FooController.java:395) 14:01:35431错误[stderr](http-/0.0.0:8080-1)位于 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) 14:01:35434错误[stderr](http-/0.0.0:8080-1)位于 invoke(NativeMethodAccessorImpl.java:57) 14:01:35436错误[stderr](http-/0.0.0:8080-1)位于 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 14:01:35437错误[stderr](http-/0.0.0:8080-1)位于 java.lang.reflect.Method.invoke(Method.java:601)14:01:35438错误 [stderr](http-/0.0.0:8080-1)在 org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 14:01:35439错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 14:01:35441错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 14:01:35442错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:775) 14:01:35443错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) 14:01:35445错误[stderr](http-/0.0.0:8080-1)位于 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.j
AuditListener.preUpdate
this.configurationRepository.findAll()
org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll
org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1166)
Session session = entityManager.unwrap(Session.class);
session.setHibernateFlushMode(FlushMode.MANUAL);
// do your db stuff
session.setHibernateFlushMode(FlushMode.AUTO);