Java @启用JPA审核和LocalSessionFactoryBean

Java @启用JPA审核和LocalSessionFactoryBean,java,hibernate,spring-boot,spring-data-jpa,spring-orm,Java,Hibernate,Spring Boot,Spring Data Jpa,Spring Orm,在将纯SpringV4应用程序迁移到SpringBoot2.1之后,我遇到了一些审计问题 出于演示目的,我创建了一个小演示应用程序,其设置基本上如下所示: @springboot应用程序 公共类HibernateWithJPA应用程序{ 公共静态void main(字符串[]args){ run(hibernatewithjpaaapplication.class,args); } } @启用JPA审核 @配置 @EnableJpaRepositories(basePackages=“com.g

在将纯SpringV4应用程序迁移到SpringBoot2.1之后,我遇到了一些审计问题

出于演示目的,我创建了一个小演示应用程序,其设置基本上如下所示:

@springboot应用程序
公共类HibernateWithJPA应用程序{
公共静态void main(字符串[]args){
run(hibernatewithjpaaapplication.class,args);
}
}
@启用JPA审核
@配置
@EnableJpaRepositories(basePackages=“com.github.hibernatewithjpa.repository”,entityManagerFactoryRef=“sessionFactory”)
@启用事务管理
公共类应用程序配置{
@豆子
公共LocalSessionFactoryBean sessionFactory(ConfigurableListableBeanFactory beanFactory,DataSource DataSource){
属性=新属性();
setProperty(Environment.dialent,“org.hibernate.dialent.mysqldialent”);
LocalSessionFactoryBean LocalSessionFactoryBean=新的LocalSessionFactoryBean();
setDataSource(dataSource);
localSessionFactoryBean.setPackagesToScan(“com.github.hibernatewithjpa.domain”);
setHibernateProperties(属性);
返回localSessionFactoryBean;
}
}
我还有一个非常简单的存储库和实体

public interface ClientRepository扩展了分页和排序存储库{
}
@资料
@实体
@表(name=“客户”)
@EntityListeners(AuditingEntityListener.class)
公共类客户端{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私有整数id;
@纵队
私有字符串名称;
@创建数据
创建私人日期;
}
以下测试表明未应用审核:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=hibernatewithjpaaapplication.class)
公共类ClientRepositoryTest{
@自动连线
私人委托人委托人委托人;
@试验
公开无效测试(){
客户端=新客户端();
客户机名称(“df”);
this.clientRepository.save(客户机);
client=this.clientRepository.findById(client.getId()).get();
assertThat(client.getCreated()).isNotNull();
}
}
该应用程序还使用JPA和本机Hibernate查询。据介绍,使用
LocalSessionFactoryBean
应该是我们设置的正确方法。因此,使用
LocalContainerEntityManagerFactoryBean
实际上不是一个选项

调试时,我可以看到
annotationBeanConfigureSpect
无法配置
AuditingEntityListener
bean,因为
BeanConfigureSupport
缺少
ConfigurableListableBeanFactory
。因此,
AuditingEntityListener
的处理程序未设置,因此未应用审核

我现在想知道我是否做错了什么,或者这是spring框架还是spring引导问题


非常感谢您的帮助

您的客户端是否包含getCreated()方法@mohammadreza:是的,这是龙目山的注释。你为客户设定了一个名字,但你的理想反应是什么?!我的意思是createdDate应该为null,因为您没有设置它?这正是审计的想法。保存时会自动设置内容。