Es posible que haya estado en una situación similar en la que quería Spring Data JPA @CreatedDate
anotación para trabajar, pero no necesitaba la auditoría a nivel de usuario que se describe en su documentación.
Para que la auditoría basada en anotaciones funcionara, tuve que agregar una clase a mi proyecto que implementara org.springframework.data.domain.AuditorAware
. Esto es extraño porque en realidad no parece usar el valor devuelto por getCurrentAuditor()
método que implementará; el mío simplemente devuelve null
.
public class NullAuditorBean implements AuditorAware {
@Override
public Object getCurrentAuditor() {
return null;
}
}
Luego necesitaba hacer referencia a mi "objeto nulo" AuditorAware
implementación en una entrada en mi applicationContext
para activar la auditoría JPA. Tenía que asegurarme de hacer esto antes de la línea que especifica jpa:repositories
. Esto se parece a:
<bean id="auditorBean" class="your.package.subbed.here.NullAuditorBean"/>
<jpa:auditing auditor-aware-ref="auditorBean"/>
También tuve que agregar un orm.xml
y necesitaba hacer referencia formal a él como una propiedad de mi entityManagerFactory
frijol, así:
<property name="mappingResources">
<value>META-INF/orm.xml</value>
</property>
Asegúrese de que este META-INF/orm.xml
la entrada se almacena con su salida de compilación (la mía está en mi WAR en WEB-INF/classes
.
Ese orm.xml
archivo, para que conste, contenía algunos repetitivos, que se pueden encontrar en la respuesta a esta pregunta relacionada.
Fue una buena cantidad de trabajo cuando conseguí que esto funcionara. ¡Es posible que prefiera su solución de trabajo anterior!