2016-11-14 96 views
3

我使用JPA和Spring的某些部分(如事務管理,JPA存儲庫),但我不使用Spring進行依賴注入,而是將Spring部分視爲POJO對象。到目前爲止,我的工作很好:我有運行時生成的JPA存儲庫類,事務由Spring類管理。以編程方式添加JPA EntityListener/Spring Data AuditingEntityListener以編程方式

但是,我似乎無法弄清楚如何讓JPA審計偵聽器工作。

例如,這裏是我的BaseEntity定義EntityListener類和審計領域:

@MappedSuperclass 
@EntityListeners({ AuditingEntityListener.class }) 
public class BaseEntity implements Serializable 
{ 
    @CreatedDate 
    @Field(index = Index.YES, store = Store.YES) 
    @Column(name = "date_created") 
    @Temporal(TemporalType.TIMESTAMP) 
    private Date dateCreated; 

    @CreatedBy 
    @Column(name = "created_by") 
    private Long createdBy; 

    //other stuff 
} 

你可以看到我指定的春天AuditEntityListener類。應用中的所有其他實體類都會擴展這個BaseEntity類。

然後,我有一個實現AuditorAware類:

public class JpaAuditConfiguration implements AuditorAware<Long> 
{ 

    @Override 
    public Long getCurrentAuditor() 
    { 
    //pretend there's real logic here... 
    return new Long(0); 
    } 
} 

現在,因爲我沒有使用Spring或Spring數據來引導自己,我需要一種方法來註冊這個JpaAuditConfigurationAuditingEntityListener

我的問題:如何以編程方式註冊JpaAuditConfigurationAuditEntityListener

如果有幫助,我使用Spring類如LocalContainerEntityManagerFactoryBean(以編程方式創建EntityManagerFactory)和PersistenceUnitPostProcessor以編程方式執行JPA配置的其餘部分。我正在尋找允許我做上面提到的實體審計監聽器註冊的鉤子。

我沒有使用任何orm.xmlpersistence.xml JPA配置文件。

我該怎麼做?

謝謝!

回答