PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

L'annotation Spring Data @CreatedDate ne fonctionne pas pour moi

J'ai peut-être été dans une situation similaire où je voulais le Spring Data JPA @CreatedDate l'annotation au travail, mais n'avait pas besoin de l'audit au niveau de l'utilisateur qui est autrement décrit dans leur documentation.

Pour que l'audit basé sur les annotations fonctionne, j'ai néanmoins dû ajouter une classe à mon projet qui implémentait org.springframework.data.domain.AuditorAware . C'est étrange car vous ne semblez pas réellement utiliser la valeur renvoyée par getCurrentAuditor() méthode que vous allez mettre en œuvre ; le mien renvoie juste null .

public class NullAuditorBean implements AuditorAware {

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

J'ai ensuite eu besoin de référencer mon "objet nul" AuditorAware implémentation dans une entrée de mon applicationContext pour activer l'audit JPA. Je devais m'assurer de le faire avant la ligne qui spécifie le jpa:repositories . Cela ressemble à :

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

J'ai également dû ajouter un orm.xml fichier, et nécessaire pour le référencer formellement en tant que propriété de mon entityManagerFactory haricot, comme ceci :

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

Assurez-vous que ce META-INF/orm.xml l'entrée est stockée avec votre sortie de compilation (la mienne est dans mon WAR sous WEB-INF/classes .

Ce orm.xml le fichier, pour mémoire, contenait un passe-partout, qui peut être trouvé dans la réponse à cette question connexe.

C'était une bonne quantité de travail quand j'ai obtenu ce travail. Vous préférerez peut-être votre solution de travail précédente !