我使用JPA和部分Spring(如事务管理,JPA存储库),但我不使用Spring进行依赖注入,而是将Spring部分视为POJO对象。到目前为止,我的工作很棒:我有运行时生成的JPA存储库类,事务由Spring类管理。
但是,我似乎无法弄清楚如何让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
}
您可以看到我指定了Spring 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 Data自行启动,因此我需要一种方法来使用JpaAuditConfiguration
注册此AuditingEntityListener
。
我的问题:如何以编程方式JpaAuditConfiguration
注册AuditEntityListener
?
如果有帮助,我会使用像LocalContainerEntityManagerFactoryBean
这样的Spring类(以编程方式创建EntityManagerFactory
)和PersistenceUnitPostProcessor
以编程方式执行其余的JPA配置。我正在寻找允许我进行上面提到的实体审计监听器注册的钩子。
我没有使用任何orm.xml
或persistence.xml
JPA配置文件。
我该怎么做?
谢谢!
答案 0 :(得分:1)
@Configuration
@EnableJpaAuditing
class Config {
@Bean
public AuditorAware<Long> auditorProvider() {
return new JpaAuditConfiguration ();
}
}
http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.auditing