我正在使用spring boot,hibernate enverse。我在pom.xml中有以下依赖
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-envers</artifactId>
</dependency>
以下是我的envers配置。
@Configuration
@EnableJpaRepositories(repositoryFactoryBeanClass =
EnversRevisionRepositoryFactoryBean.class, basePackages = {
"com.example.persistence" })
public class EnversConf
{
}
所以包com.example.persistence
包含PersonDAO
和AddressDAO
以及实体。
我有两个DAO,
interface PersonDAO extends RevisionRepository<PersonEntity, Integer, Integer>, JpaRepository<PersonEntity, Integer>{}
interface AddressDAO extends JpaRepository<AddressEntity, Integer>{}
我有两个实体PersonEntity
我想审核,AddressEntity
我不想审核。
现在我有以下两项服务,
class PersonServiceImpl implements PersonService{
@Autowire PersonDAO personDAO;
}
class AddressServiceImpl implements AddressService{
@Autowire AddressDAO addressDAO;
}
当我添加@EnableJpaRepositories(...)
配置时,它无法获取AddressDAO
的bean。我认为EnversRevisionRepositoryFactoryBean
适用于RevisionRepository
和JpaRepository
。
我得到了以下异常堆栈跟踪,
org.springframework.beans.factory.UnsatisfiedDependencyException:使用名称&#39; addressService&#39;创建bean时出错:通过字段&quot; addressDAO&#39;表达的不满意的依赖关系嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为&#39; addressDAO&#39;的init时出错::init方法的调用失败;嵌套异常是org.springframework.data.mapping.PropertyReferenceException:找不到类型AddressEntity的属性findAll!
引起:org.springframework.beans.factory.BeanCreationException:创建名称为&#39; addressDAO&#39;的init时出错::init方法的调用失败;嵌套异常是org.springframework.data.mapping.PropertyReferenceException:找不到类型AddressEntity的属性findAll!
引起:org.springframework.data.mapping.PropertyReferenceException:找不到类型为AdressEntity的属性findAll!
我错过了任何配置。
答案 0 :(得分:5)
得到解决方案;)
需要创建两个单独的配置类,因为我们不能在相同的配置类上使用TWO @EnableJpaRepositories。
所以创建了以下两个配置类,
@EnableJpaRepositories(basePackages = "com.example.jpa.dao")
class JpaConfig {}
@EnableJpaRepositories(repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBean, basePackages = "com.example.envers.dao")
class EnversConfig {}