¿Cómo puedo activar onLoad entidad () usando Hibernate Envers?

votos
0

Estoy añadiendo Hibernate Envers a mi proyecto Grails 3. Me di cuenta de que para uno de mis entidades, que tiene un onLoad()evento, el onLoad()evento nunca se invoca para las entidades de revisión Envers.

¿Cómo puedo asegurarme de que este código se invoca siempre, incluso para las revisiones históricas de esta entidad?

Caso de uso:

Estoy trabajando en un servicio REST utilizando vistas Griales 3 JSON. Una de mis clases de dominio tiene una columna discriminadora, que también se debe dejar en la salida JSON para que el consumidor puede decir qué tipo es. Por esta razón, la entidad de dominio define un onLoad()método que puebla una propiedad transitoria corresponda con el tipo discriminador:

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

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

Esta bien que funciona para casos de dominio normales, pero cuando miro hacia arriba a partir de una revisión entidad Envers' AuditQueryCreator, el queyr auditoría no está invocando el onLoad()método.

Parece como si pudiera bucle sobre los resultados e invocar de forma manual onLoad(), pero yo tenía la esperanza de que había una mejor manera de solucionar este problema.

¡Gracias por adelantado!

Publicado el 13/01/2020 a las 23:59
fuente por usuario
En otros idiomas...                            


2 respuestas

votos
0

usted podría intentar cambiar el tipo de retorno a "def", como se afirma en el documento aquí

class Person {
   String name
   Date dateCreated
   Date lastUpdated
   def onLoad() {
      log.debug "Loading ${id}"
   }
}
Respondida el 16/01/2020 a las 00:32
fuente por usuario

votos
0

¿Cómo puedo asegurarme de que este código se invoca siempre, incluso para las revisiones históricas de esta entidad?

No estoy muy versado con Grails pero estos parecen mucho a los eventos del ciclo de vida típico de APP evento anotadas y estos son métodos probable que GORM (al igual que un implementador APP) para la mirada e invocar basado en el ciclo de vida de una entidad.

La gran toma de distancia importante aquí es que los objetos devueltos por la consulta de la API Envers no son entidades. Estos objetos no son gestionados por el proveedor de persistencia, lo que es importante hacer esta distinción claramente que las influencias como una gran cantidad de expectativas de comportamiento de persistencia como entidades separadas, eventos del ciclo de vida de la entidad, etc.

Si hay algunas devoluciones de llamada de correos-initialize o de otro ciclo de vida que tiene que ir a buscar el fuego cuando los resultados de una AuditQuery, está en el código de usuario para hacer esas distinciones e invocar los métodos según sea necesario.

Respondida el 17/01/2020 a las 23:32
fuente por usuario

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