Jak mohu spustit entity onLoad () Používání režimu spánku Envers?

hlasů
0

Já přidávám hibernace Envers do mého projektu Grails 3. Všiml jsem si, že jeden z mých subjektů, které má onLoad()událost je onLoad()událost se nikdy vyvolán pro Envers revize subjekty.

Jak se mohu ujistit, tento kód je vždy vyvolána, dokonce i historických revizích tohoto subjektu?

Use case:

Já jsem pracoval na RESTful služby pomocí výhled Grails 3 JSON. Jeden z mých domén tříd má diskriminátor sloupec, které musí být rovněž vynesené v výstup JSON, takže spotřebitel může říct, jaký typ se jedná. Z tohoto důvodu účetní jednotka doména definuje onLoad()metodu, která naplní přechodný vlastnost odpovídající typ diskriminátoru:

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

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

Tato metoda funguje spolehlivě u normálních případech domény, ale když se podívám nahoru k revizi entity z Envers' AuditQueryCreatorAudit queyr není vyvolání onLoad()metody.

Vypadá to, že jsem mohl smyčku nad výsledky a ručně vyvolat onLoad(), ale doufal jsem, že tam byl lepší způsob, jak to napravit.

Díky předem!

Položena 13/01/2020 v 23:59
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
0

můžete zkusit změnit návratový typ na „def“, jak je uvedeno v doc zde

class Person {
   String name
   Date dateCreated
   Date lastUpdated
   def onLoad() {
      log.debug "Loading ${id}"
   }
}
Odpovězeno 16/01/2020 v 00:32
zdroj uživatelem

hlasů
0

Jak se mohu ujistit, tento kód je vždy vyvolána, dokonce i historických revizích tohoto subjektu?

Nejsem zběhlý s Grails, ale tyto vypadají velmi podobně jako typický SPS událost životní cyklus komentovaných událostí a je pravděpodobné, že metody, které GORM (podobně jako SPS realizátora) hledat a vyvolat na základě životního cyklu účetní jednotky.

Velkou důležité vzít pryč je, že objekty vrácené Envers Query API nejsou entity. Tyto objekty nejsou řízeny poskytovatele vytrvalost, takže je důležité, aby jasně toto odlišení jako to ovlivňuje spousta očekávání chování vytrvalost, jako samostatných subjektů, životního cyklu akcí entity, atd

Pokud existuje nějaké rozmístit inicializaci nebo jiný životního cyklu zpětné volání, že je třeba, aby oheň při načítání výsledků z AuditQuery, jeho použití kódu uživatele, aby tyto rozdíly a vyvolat těchto metod podle potřeby.

Odpovězeno 17/01/2020 v 23:32
zdroj uživatelem

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