Spring数据审核在我的项目中无效

时间:2012-11-09 10:36:16

标签: hibernate spring-data spring-data-jpa auditing

我正在尝试配置弹出数据审核。

我使用Hibernate 4.1.6,hibernate-jpa 2.0,spring-data-jpa 1.1.0,spring 3.1.2(我已经将spring-aspects添加到了dependecies,因为我没有它就出错了。)

我已根据example对我的项目配置进行了一些修改:

  • 我的实体不会扩展AbstractAuditable但会实现Auditable接口
  • 我没有persistence.xml放置jadira属性,而是在DateTime属性上使用了以下注释:@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")

我没有任何错误,但审核不起作用:创建记录后,审核字段为空。

有谁知道我做错了什么?我能检查什么?欢迎提出任何建议。

这是实体代码:

@Entity
public class TestEntity implements Auditable<String, Long> {
  @Column
  @Id
  @SequenceGenerator(...)
  @GeneratedValue(...)
  private Long id;

  @Column
  private String createdBy;

  @Column
  @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
  private DateTime creationDate;

  @Column
  private String lastModifiedBy;

  @Column
  @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
  private DateTime lastModifiedDate;

  // getters and setters
}

这是弹簧上下文配置:

<jpa:repositories base-package="...." />

<jpa:auditing auditor-aware-ref="auditorAware" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="packagesToScan" value="..." />
  <property name="mappingResources">
    <value>.../domain-orm.xml"</value>
  </property>
  <property name="jpaVendorAdapter">
    <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    ...
    </bean>
  </property>
  <property name="jpaProperties">
    <util:properties>
      <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop>
    </util:properties>
  </property>
</bean>
<context:annotation-config />

<bean id="auditorAware" class="...TestAuditorAware"/>

我的审计员​​知道:

public class TestAuditorAware implements AuditorAware<String> {
  @Override
  public String getCurrentAuditor() {
    return "TEST";
  }
}

我的domain-orm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_2_0.xsd"
    version="2.0">
  <persistence-unit-metadata>
    <persistence-unit-defaults>
      <entity-listeners>
        <entity-listener class="org.springframework.data.jpa.domain.auditing.support.AuditingEntityListener" />
        </entity-listeners>
      </persistence-unit-defaults>
    </persistence-unit-metadata>
</entity-mappings>

更新:我认为该问题与未注册的AuditingEntityListener有关。我添加了一个orm.xml配置,但这没有解决。我认为听众仍然没有注册。

1 个答案:

答案 0 :(得分:1)

我通过添加orm.xml文件解决了这个问题。起初它没有用,因为我还在文件名中添加了一个小错字(日志中没有显示错误)。