Може да съм бил в подобна ситуация, когато исках Spring Data JPA @CreatedDate
анотацията да работи, но нямаше нужда от одит на ниво потребител, който иначе е описан в тяхната документация.
За да накарам одита, базиран на анотации, да работи, въпреки това трябваше да добавя клас към моя проект, който имплементира org.springframework.data.domain.AuditorAware
. Това е странно, защото всъщност не изглежда да използвате стойността, върната от getCurrentAuditor()
метод, който ще прилагате; моят просто връща null
.
public class NullAuditorBean implements AuditorAware {
@Override
public Object getCurrentAuditor() {
return null;
}
}
След това трябваше да препратя моя "нулев обект" AuditorAware
реализация в запис в моя applicationContext
за да активирате одита на JPA. Трябваше да се уверя, че съм направил това преди реда, който определя jpa:repositories
. Това изглежда нещо като:
<bean id="auditorBean" class="your.package.subbed.here.NullAuditorBean"/>
<jpa:auditing auditor-aware-ref="auditorBean"/>
Трябваше също да добавя orm.xml
файл и трябва официално да го препратя като свойство на моя entityManagerFactory
боб, така:
<property name="mappingResources">
<value>META-INF/orm.xml</value>
</property>
Уверете се, че това META-INF/orm.xml
записът се съхранява с вашия компилационен изход (моят е в моята WAR под WEB-INF/classes
.
Този orm.xml
файл, за протокола, съдържаше някакъв шаблон, който може да се намери в отговора на този свързан въпрос.
Беше доста работа, когато накарах това да работи. Може да предпочетете предишното си работно решение!