PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Spring Data @CreatedDate Annotation funktioniert bei mir nicht

Ich war vielleicht in einer ähnlichen Situation, in der ich das Spring Data JPA @CreatedDate haben wollte Anmerkung funktionieren, aber es war keine Überwachung auf Benutzerebene erforderlich, die ansonsten in ihrer Dokumentation beschrieben wird.

Damit das annotationsbasierte Auditing funktioniert, musste ich meinem Projekt dennoch eine Klasse hinzufügen, die org.springframework.data.domain.AuditorAware implementierte . Das ist seltsam, weil Sie anscheinend nicht den von getCurrentAuditor() zurückgegebenen Wert verwenden Methode, die Sie implementieren werden; Mine gibt nur null zurück .

public class NullAuditorBean implements AuditorAware {

    @Override
    public Object getCurrentAuditor() {
        return null;
    }
}

Dann musste ich auf mein "Null-Objekt" AuditorAware verweisen Implementierung in einem Eintrag in meinem applicationContext um das JPA-Auditing zu aktivieren. Ich musste sicherstellen, dass ich dies vor der Zeile tat, die die jpa:repositories angibt . Das sieht in etwa so aus:

<bean id="auditorBean" class="your.package.subbed.here.NullAuditorBean"/>
<jpa:auditing auditor-aware-ref="auditorBean"/>

Ich musste auch eine orm.xml hinzufügen -Datei und musste formell als Eigenschaft meiner entityManagerFactory referenziert werden Bohne, etwa so:

<property name="mappingResources">
    <value>META-INF/orm.xml</value>
</property>

Stellen Sie sicher, dass diese META-INF/orm.xml -Eintrag wird mit Ihrer Kompilierungsausgabe gespeichert (meiner befindet sich in meinem WAR unter WEB-INF/classes .

Diese orm.xml Datei enthielt, fürs Protokoll, einige Textbausteine, die in der Antwort auf diese verwandte Frage zu finden sind.

Es war eine ziemliche Menge Arbeit, als ich das zum Laufen brachte. Möglicherweise bevorzugen Sie Ihre bisherige Arbeitslösung!