Alternativas MapupSuperclass en Grails
jpa auditing (1)
En muchos proyectos anteriores, utilicé este enfoque JPA / Hibernate para agregar capacidades de auditoría a un sistema. Es muy efectivo y discreto.
¿Hay una alternativa de Grails @MappedSuperclass (sin codificación de objetos de modelo de dominio en Java en lugar de Groovy)? ¿Cómo se puede declarar una clase padre en un enfoque de tabla por subclase sin tener una tabla creada para él? He leído la documentación de GORM ( 5.2.3 Herencia en GORM ) pero, además de la discusión de tabla por jerarquía frente a tabla por subclase, no encontré ningún detalle sobre cómo hacer esto.
Alternativamente, ¿cuál es la forma recomendada de lograr este tipo de auditoría en Grails?
OK, busqué un poco más y respondí mi propia pregunta :)
Básicamente, es tan simple como declarar MappedSuperclass como abstracto y grails no creará una tabla para él. Me di cuenta al volver a leer el manual (RTFM básicamente ... funciona de maravilla): "GORM admite la herencia tanto de clases base abstractas como de entidades GORM persistentes concretas". Es decir, las clases concretas son persistentes, por lo que las abstractas no lo son. Paga para leer más cuidadosamente.
P.ej
abstract class Auditable {
Date dateCreated
Date lastUpdated
}
class Book extends Auditable {
String title
String description
}
Solo se creará la tabla del libro y tendrá el
fecha de creacion
y
última actualización
columnas Además, como una ventaja adicional, las propiedades dateCreated y lastUpdated tienen un sello de tiempo automático por parte de Grails.
Espero que esto ayude a otros.