Spring Data JPA审核不起作用

时间:2014-11-22 17:02:04

标签: spring hibernate jpa spring-data-jpa

民间,

我们很难在Spring DATA JPA中整合审计支持。

我们使用的是spring 3.2.11和hibernate 4.3.0。 (我们不想使用ORM.xml)

问题是我们未在“审计意见”中收到任何事件。保存客户实体时的类。

(我们调试了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;
}
}

用户实体:

@Entity(name = "USER")
@Table(name = "USER_DETAILS")
public class User extends AbstractPersistable<Long>{

private String name;

public String getName() {
    return name;
}

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

我们有一个辅助类来配置spring。

@Configuration
@EnableTransactionManagement
@EnableJpaAuditing(auditorAwareRef = "auditorAwareImpl")
@EnableJpaRepositories(basePackages = "businessclass")
public class PersistenceContext {

}

AuditAwareImpl。

 @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;    

}

}

1 个答案:

答案 0 :(得分:1)

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