PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

L'annotazione Spring Data @CreatedDate non funziona per me

Potrei essere stato in una situazione simile in cui volevo lo Spring Data JPA @CreatedDate l'annotazione per funzionare, ma non aveva bisogno del controllo a livello di utente che è altrimenti descritto nella loro documentazione.

Per far funzionare il controllo basato sulle annotazioni, ho dovuto comunque aggiungere una classe al mio progetto che implementasse org.springframework.data.domain.AuditorAware . Questo è strano perché in realtà non sembra che tu usi il valore restituito da getCurrentAuditor() metodo che implementerai; il mio restituisce solo null .

public class NullAuditorBean implements AuditorAware {

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

Ho quindi dovuto fare riferimento al mio "oggetto nullo" AuditorAware implementazione in una voce nel mio applicationContext per attivare l'audit JPA. Dovevo assicurarmi di averlo fatto prima della riga che specifica jpa:repositories . Assomiglia a:

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

Ho anche dovuto aggiungere un orm.xml file e dovevo farvi riferimento formalmente come una proprietà del mio entityManagerFactory fagiolo, in questo modo:

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

Assicurati che questo META-INF/orm.xml la voce è memorizzata con il tuo output di compilazione (il mio è nel mio WAR in WEB-INF/classes .

Quel orm.xml il file, per la cronaca, conteneva alcuni standard, che possono essere trovati nella risposta a questa domanda correlata.

È stata una discreta quantità di lavoro quando ho ottenuto questo lavoro. Potresti preferire la tua precedente soluzione di lavoro!