Hoe kan ik dit laten entiteit onLoad () met behulp van winterslaap Envers?

stemmen
0

Ik voeg Hibernate Envers aan mijn Grails 3 project. Ik heb gemerkt dat voor één van mijn entiteiten, die een heeft onLoad()evenement, het onLoad()evenement is nooit voor Envers herziening entiteiten ingeroepen.

Hoe kan ik ervoor zorgen dat deze code wordt altijd ingeroepen, zelfs voor historische herzieningen van deze entiteit?

Use case:

Ik ben bezig met een goede service met behulp van uitzicht Grails 3 JSON. One van mijn domein classes heeft een discriminator kolom, die ook moet worden weergegeven in het JSON output, zodat de consument kan zien welk type het is. Daarom domein entiteit definieert een onLoad()werkwijze waarin een voorbijgaande eigenschap overeenkomt met de discriminator soort bevolkt:

class MyChildDomainClass extends MyBaseDomainClass {
    void onLoad() {
        valueType = ValueType.STRING
    }

    static mapping = {
        discriminator value: ValueType.STRING
    }
}

Dit werkt prima voor normaal domein gevallen, maar als ik kijk omhoog een entiteit herziening van Envers' AuditQueryCreator, de audit queyr is niet het aanroepen van de onLoad()methode.

Het lijkt alsof ik kon lus over de resultaten en het handmatig te roepen onLoad(), maar ik hoopte er een betere manier om dit op te lossen was.

Bij voorbaat bedankt!

De vraag is gesteld op 13/01/2020 om 23:59
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

je zou kunnen proberen het veranderen van de soort terugkeer naar "def", zoals vermeld in de doc hier

class Person {
   String name
   Date dateCreated
   Date lastUpdated
   def onLoad() {
      log.debug "Loading ${id}"
   }
}
antwoordde op 16/01/2020 om 00:32
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more