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