I am working on project where I use Spring Data. I wanted to fill in creationTime
field using @CreatedDate
annotation instead using method with
I may have been in a similar situation where I wanted the Spring Data JPA @CreatedDate
annotation to work, but had no need for the user-level auditing that is otherwise described in their documentation.
To get the annotation-based auditing to work, I had to nonetheless add a class to my project that implemented org.springframework.data.domain.AuditorAware
. This is odd because you don't actually seem to use the value returned from the getCurrentAuditor()
method that you'll be implementing; mine just returns null
.
public class NullAuditorBean implements AuditorAware {
@Override
public Object getCurrentAuditor() {
return null;
}
}
I then needed to reference my "null object" AuditorAware
implementation in an entry in my applicationContext
to activate the JPA auditing. I had to make sure I did this before the line that specifies the jpa:repositories
. This looks something like:
<bean id="auditorBean" class="your.package.subbed.here.NullAuditorBean"/>
<jpa:auditing auditor-aware-ref="auditorBean"/>
I also had to add an orm.xml
file, and needed to formally reference it as a property of my entityManagerFactory
bean, like so:
<property name="mappingResources">
<value>META-INF/orm.xml</value>
</property>
Make sure this META-INF/orm.xml
entry is stored with your compile output (mine is in my WAR under WEB-INF/classes
.
That orm.xml
file, for the record, contained some boilerplate, which can be found in the answer to this related question.
It was a fair amount of work when I got this working. You may prefer your previous working solution!
This question is quite old, but still relevant. For me the key was this, from the documentation
Since Spring Data MongoDB 1.4 auditing can be enabled by annotating a configuration class with the @EnableMongoAuditing annotation.
For example:
@Configuration
@EnableMongoAuditing
class Config {
/**
* Optional, depending on your needs
*/
@Bean
public AuditorAware<AuditableUser> myAuditorProvider() {
return new AuditorAwareImpl();
}
}
Or, in XML:
<mongo:auditing/>