2012-11-09 8 views
1

스프링 데이터 감사를 구성하려고합니다.내 프로젝트에서 스프링 데이터 감사가 작동하지 않습니다.

나는 Hibernate 4.1.6, hibernate-jpa 2.0, spring-data-jpa 1.1.0, spring 3.1.2를 사용했다. (나는 그것 때문에 오류가 발생했기 때문에 의존성에 봄 양상을 추가했다.)

나는 일부 수정이 example에 내 프로젝트 구성을 기반으로했습니다

  • 내 엔티티가 AbstractAuditable 연장하지 않지만 감사 대상 인터페이스를 구현
  • 어디서 넣어의 persistence.xml이없는 jadira 속성과 내가 대신 날짜 시간 속성에 다음과 같은 주석을 사용 : 내가 어떤 오류가없는 @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")

그러나 감사는 작동하지 않습니다 나는 REC를 만든 후 감사 필드가 null입니다 ord.

내가 잘못 한 것을 아는 사람이 있습니까? 무엇을 확인할 수 있습니까? 어떤 제안이라도 환영합니다. 알고

<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"; 
    } 
} 

내 도메인 orm.xml :

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

이 스프링 컨텍스트 구성입니다 : 여기

엔티티 코드
<?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

orm.xml 파일을 추가하여 문제를 해결했습니다. 처음에는 파일 이름에 작은 오타가 추가 되었기 때문에 (로그에 오류가 표시되지 않음) 작동하지 않았습니다.

+1

'orm.xml'없이 감사 기능을 사용할 수 있습니다. 여기를 참조하십시오 : http://stackoverflow.com/a/26240077/363573 – Stephan