【发布时间】:2015-01-20 16:50:42
【问题描述】:
伙计们,
我们很难在 Spring DATA JPA 中集成审计支持。
我们使用的是 spring 3.2.11 和 hibernate 4.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;
}
}
用户实体:
@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;
}
}
【问题讨论】:
-
你能找到解决办法吗?
-
stackoverflow.com/a/26240077/2500554(解决方法部分)回答您的问题。
标签: spring hibernate jpa spring-data-jpa