我想在我的项目中使用Spring-Data-Envers审计一些表,但我得到一些错误。我有2个春季启动项目,Claims和InsureConnect。InsureConnect是Claims中的一个依赖项。
Claims有Spring Data Envers依赖
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-envers</artifactId>
<version>2.6.4</version>
</dependency>
Project Claims中的JPA配置如下。我在Claims项目中有JPA存储库
@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "claimsTransEntityManagerFactory",
transactionManagerRef = "claimsTransTransactionManager", basePackages={"com.metamorphosys.claims.jpa.transaction"})
public class ClaimsTransactionConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(ClaimsTransactionConfig.class);
@Bean
PlatformTransactionManager claimsTransTransactionManager() {
return new JpaTransactionManager(claimsTransEntityManagerFactory().getObject());
}
@Bean
LocalContainerEntityManagerFactoryBean claimsTransEntityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
//code...
}
ClaimsApplication.java
@SpringBootApplication(scanBasePackages ={"com.metamorphosys"})
@EnableJpaRepositories(repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBean.class)
public class ClaimsApplication{
//code
}
下面的InsureConnect项目是transactionConfig.java.
@Configuration
public class TransactionConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(TransactionConfig.class);
@Bean
@Primary
PlatformTransactionManager transTransactionManager() {
return new JpaTransactionManager(transEntityManagerFactory().getObject());
}
@Bean
@Primary
LocalContainerEntityManagerFactoryBean transEntityManagerFactory() {
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
// code
}
InsureConnectApplication.java
@SpringBootApplication
@EnableAsync
@ImportResource({ "classpath*:config/*.xml" })
@EnableJpaRepositories(entityManagerFactoryRef = "transEntityManagerFactory",
transactionManagerRef = "transTransactionManager", basePackages={"com.metamorphosys.insureconnect.jpa.transaction"}
,repositoryFactoryBeanClass = BaseRepositoryFactoryBean.class)
public class InsureConnectApplication implements ApplicationContextAware {
private static final Logger log = LoggerFactory.getLogger(InsureConnectApplication.class);
}
Insureconnect没有Spring-Data-Envers依赖
现在当我运行索赔项目时,我在insureConnect项目中得到以下TransactionConfig错误。
Cannot create inner bean '(inner bean)#64ba4522' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#64ba4522': Cannot resolve reference to bean 'transEntityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transEntityManagerFactory' defined in class path resource [com/metamorphosys/insureconnect/dataobjects/transaction/TransactionConfig.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javassist/bytecode/ClassFile
项目运行良好,如果我删除Spring-Data-Envers依赖。
谁能帮我理解为什么错误是发生在使用Envers?提前谢谢。
注意-我使用2.6.4 v的Spring-Data-envers。
我的应用程序也有类似的问题。我最终将jpa starter添加到我的pom中,之后我的应用程序开始工作:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
我认为这个starter加载了一些spring-data-envers没有的额外的/或加载。