PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A anotação Spring Data @CreatedDate não funciona para mim


Eu posso ter estado em uma situação semelhante onde eu queria o Spring Data JPA @CreatedDate anotação para funcionar, mas não precisava da auditoria em nível de usuário que é descrita de outra forma em sua documentação.

Para que a auditoria baseada em anotações funcionasse, tive que adicionar uma classe ao meu projeto que implementava org.springframework.data.domain.AuditorAware . Isso é estranho porque você não parece realmente usar o valor retornado do getCurrentAuditor() método que você implementará; o meu apenas retorna null .
public class NullAuditorBean implements AuditorAware {

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

Eu então precisei referenciar meu "objeto nulo" AuditorAware implementação em uma entrada no meu applicationContext para ativar a auditoria JPA. Eu tive que me certificar de fazer isso antes da linha que especifica o jpa:repositories . Isso se parece com algo como:
<bean id="auditorBean" class="your.package.subbed.here.NullAuditorBean"/>
<jpa:auditing auditor-aware-ref="auditorBean"/>

Eu também tive que adicionar um orm.xml arquivo e precisava referenciá-lo formalmente como uma propriedade do meu entityManagerFactory feijão, assim:
<property name="mappingResources">
    <value>META-INF/orm.xml</value>
</property>

Certifique-se de que este META-INF/orm.xml a entrada é armazenada com a sua saída de compilação (a minha está no meu WAR em WEB-INF/classes .

Esse orm.xml arquivo, para registro, continha alguns clichês, que podem ser encontrados na resposta a esta pergunta relacionada.

Foi uma quantidade razoável de trabalho quando eu consegui isso funcionando. Você pode preferir sua solução de trabalho anterior!