Mogłem być w podobnej sytuacji, gdy chciałem Spring Data JPA @CreatedDate
adnotacja do pracy, ale nie ma potrzeby przeprowadzania audytu na poziomie użytkownika, który jest w inny sposób opisany w ich dokumentacji.
Aby audyt oparty na adnotacjach działał, musiałem jednak dodać klasę do mojego projektu, która zaimplementowała org.springframework.data.domain.AuditorAware
. To dziwne, ponieważ w rzeczywistości nie używasz wartości zwróconej przez getCurrentAuditor()
metoda, którą będziesz wdrażać; mój po prostu zwraca null
.
public class NullAuditorBean implements AuditorAware {
@Override
public Object getCurrentAuditor() {
return null;
}
}
Następnie musiałem odwołać się do mojego „pustego obiektu” AuditorAware
implementacja we wpisie w moim applicationContext
aby aktywować audyt JPA. Musiałem się upewnić, że zrobiłem to przed wierszem, który określa jpa:repositories
. To wygląda mniej więcej tak:
<bean id="auditorBean" class="your.package.subbed.here.NullAuditorBean"/>
<jpa:auditing auditor-aware-ref="auditorBean"/>
Musiałem też dodać plik orm.xml
i musiał formalnie odwołać się do niego jako do właściwości mojej entityManagerFactory
fasola, jak tak:
<property name="mappingResources">
<value>META-INF/orm.xml</value>
</property>
Upewnij się, że ten META-INF/orm.xml
wpis jest przechowywany z danymi wyjściowymi kompilacji (mój jest w moim WAR pod WEB-INF/classes
.
Ten orm.xml
dla przypomnienia, plik zawierał kilka szablonów, które można znaleźć w odpowiedzi na to powiązane pytanie.
To było sporo pracy, kiedy zacząłem pracować. Możesz preferować swoje poprzednie rozwiązanie robocze!