创建测试数据时引发NullPointerException [英] Envers NullPointerException when creating test data
问题描述
我是Envers的新手-从今天开始.我正在使用Envers扩展具有审计支持的现有Spring Boot应用程序.我注释了所有@Entity类并进行了一些更改,如下所述 Envers + MYSQL + List< String> = SQLSyntaxErrorException:指定的密钥太长; 所有数据库表均已完美创建,但是当我使用CommandLineRunner在数据库中生成测试数据时,出现以下错误.
I am brand new to Envers - started today. I am extending an existing Spring Boot application with Audit support using Envers. I annotated all @Entity classes and made some changes, as described here Envers + MYSQL + List<String> = SQLSyntaxErrorException: Specified key was too long; All database tables are perfectly created, but when I use a CommandLineRunner to generate test data in the database I get the below Error.
ERROR 17:50 o.s.b.SpringApplication.reportFailure:821: Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:782)
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:763)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1213)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1202)
at com.agiletunes.productmanager.ProdMgrApp.init(ProdMgrApp.java:59)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:841)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$159(LauncherImpl.java:182)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Error while committing the transaction
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:541)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:746)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:714)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:534)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:305)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)
at com.agiletunes.productmanager.services.DatabaseTestInitializationService$$EnhancerBySpringCGLIB$$62d47d4b.createTestData(<generated>)
at com.agiletunes.productmanager.ProdMgrApp.lambda$2(ProdMgrApp.java:129)
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:779)
... 8 common frames omitted
Caused by: javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.internal.ExceptionConverterImpl.convertCommitException(ExceptionConverterImpl.java:81)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:107)
at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:532)
... 18 common frames omitted
Caused by: java.lang.NullPointerException: null
at org.hibernate.envers.event.spi.BaseEnversEventListener.addCollectionChangeWorkUnit(BaseEnversEventListener.java:109)
at org.hibernate.envers.event.spi.BaseEnversEventListener.generateBidirectionalCollectionChangeWorkUnits(BaseEnversEventListener.java:76)
at org.hibernate.envers.event.spi.EnversPostInsertEventListenerImpl.onPostInsert(EnversPostInsertEventListenerImpl.java:49)
at org.hibernate.action.internal.EntityInsertAction.postInsert(EntityInsertAction.java:168)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:135)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1454)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:511)
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3290)
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2486)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:178)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:39)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:271)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:104)
... 19 common frames omitted
INFO 17:50 o.s.o.j.AbstractEntityManagerFactoryBean.destroy:597: Closing JPA EntityManagerFactory for persistence unit 'default'
INFO 17:50 c.z.h.HikariDataSource.close:350: HikariPool-1 - Shutdown initiated...
INFO 17:50 c.z.h.HikariDataSource.close:352: HikariPool-1 - Shutdown completed.
在添加Envers之前,以及在缩短字符串之前,如上面其他stackoverflow条目中所述,我可以完美地生成测试数据.
Before I added Envers, and before I shortend the strings, as explained in the other stackoverflow entry above, I could generate the test data perfectly.
问题在于,我没有在整个堆栈中看到任何有用的信息,这些信息来自问题所在.如何找出根本原因?
The trouble is that I don't see in the entire stack trace any helpful information where the issue is coming from. How to find out what is the root cause?
推荐答案
我尝试了很多事情,但是当我在这里和那里进行更改时,我偶然发现了一个缺少@Audited
批注的超类.现在,它运行良好.
I tried a number of things, but while I changed here and there, I stumbled over a superclass that was lacking the @Audited
annotation. Now it is working perfectly.
这篇关于创建测试数据时引发NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!