sql >> Databasteknik >  >> RDS >> PostgreSQL

Vårdata @CreatedDate-kommentaren fungerar inte för mig

Jag kan ha varit i en liknande situation där jag ville ha Spring Data JPA @CreatedDate anteckningen fungerade, men hade inget behov av den revision på användarnivå som annars beskrivs i deras dokumentation.

För att få den anteckningsbaserade revisionen att fungera var jag ändå tvungen att lägga till en klass i mitt projekt som implementerade org.springframework.data.domain.AuditorAware . Detta är konstigt eftersom du faktiskt inte verkar använda värdet som returneras från getCurrentAuditor() metod som du kommer att implementera; min returnerar bara null .

public class NullAuditorBean implements AuditorAware {

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

Jag behövde sedan referera till mitt "nullobjekt" AuditorAware implementering i en post i min applicationContext för att aktivera JPA-revisionen. Jag var tvungen att se till att jag gjorde detta före raden som anger jpa:repositories . Det här ser ut ungefär som:

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

Jag var också tvungen att lägga till en orm.xml fil och behövde formellt referera till den som en egenskap hos min entityManagerFactory böna, som så:

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

Se till att denna META-INF/orm.xml posten lagras med din kompileringsutgång (min finns i min WAR under WEB-INF/classes .

Den där orm.xml filen innehöll, för protokollet, en beskrivning, som kan hittas i svaret på den här relaterade frågan.

Det var en hel del jobb när jag fick det här att fungera. Du kanske föredrar din tidigare fungerande lösning!



  1. SQL-server identitetskolumns värden börjar på 0 istället för 1

  2. Automatiserad testning av uppgraderingsprocessen för PostgreSQL

  3. Exportera MySQL eller MariaDB-databas

  4. Hur får man en lista över månader mellan 2 givna datum med hjälp av en fråga?