Spring数据JPA审核不工作

Spring数据JPA审核不工作,spring,hibernate,jpa,spring-data-jpa,Spring,Hibernate,Jpa,Spring Data Jpa,各位 我们很难在SpringDataJPA中集成审计支持 我们正在使用Spring3.2.11和Hibernate4.3.0。(我们不想使用ORM.xml) 问题是,在保存客户实体时,“AuditAwareImpl”类中没有收到任何事件 (我们调试了AuditingEntityListener,发现AuditHandler被正确注入,但在稍后事件未被激发。我们怀疑存在类加载问题) 代码如下 基本上我们有两个商业实体 @Entity(name = "CUSTOMER") @Table(name =

各位

我们很难在SpringDataJPA中集成审计支持

我们正在使用Spring3.2.11和Hibernate4.3.0。(我们不想使用ORM.xml)

问题是,在保存客户实体时,“AuditAwareImpl”类中没有收到任何事件

(我们调试了AuditingEntityListener,发现AuditHandler被正确注入,但在稍后事件未被激发。我们怀疑存在类加载问题)

代码如下

基本上我们有两个商业实体

@Entity(name = "CUSTOMER")
@Table(name = "CUSTOMER_DETAILS")
@EntityListeners(AuditingEntityListener.class)
public class Customer extends AbstractAuditable<User, Long>  {


private String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}
}
auditawarempll

 @Component
 public class AuditorAwareImpl implements AuditorAware<User> {

public User getCurrentAuditor() {

     ApplicationContext context = ApplicationContextManager.getContext();
     UserRepository repository = (UserRepository)context.getBean("userRepository");
     User user = new User();
     user.setName("work now");
     repository.save(user);
                 return user;    

}

}
@组件
公共类AuditorAwareImpl实现AuditorAware{
公共用户getCurrentAuditor(){
ApplicationContext context=ApplicationContextManager.getContext();
UserRepository=(UserRepository)context.getBean(“UserRepository”);
用户=新用户();
user.setName(“立即工作”);
保存(用户);
返回用户;
}
}

您需要调用存储库的saveAndFlush方法。
org.springframework.data.jpa.repository.JpaRepository的保存方法支持保存和更新。如果是update,则调用em.merge(),但不会触发PreUpdate事件。如果要触发预更新,需要调用saveAndFlush方法

是否可以找到解决方案?(解决方案部分)回答您的问题。
@Configuration
@EnableTransactionManagement
@EnableJpaAuditing(auditorAwareRef = "auditorAwareImpl")
@EnableJpaRepositories(basePackages = "businessclass")
public class PersistenceContext {

}
 @Component
 public class AuditorAwareImpl implements AuditorAware<User> {

public User getCurrentAuditor() {

     ApplicationContext context = ApplicationContextManager.getContext();
     UserRepository repository = (UserRepository)context.getBean("userRepository");
     User user = new User();
     user.setName("work now");
     repository.save(user);
                 return user;    

}

}