Overriding dateCreated para probar en Grails
¿Hay alguna forma de anular el valor dedateCreated
campo en mi clase de dominio sin desactivar la marca de tiempo automática?
Necesito probar el controlador y debo proporcionar objetos de dominio específicos con una fecha de creación específica, pero GORM parece anular los valores que proporciono.
EditaMis clases se ven así:
class Message {
String content
String title
User author
Date dateCreated
Date lastUpdated
static hasMany = [comments : Comment]
static constraints = {
content blank: false
author nullable: false
title nullable: false, blank: false
}
static mapping = {
tablePerHierarchy false
tablePerSubclass true
content type: "text"
sort dateCreated: 'desc'
}
}
class BlogMessage extends Message{
static belongsTo = [blog : Blog]
static constraints = {
blog nullable: false
}
}
Estoy usando la consola para acortar las cosas. El problema que encontré con el enfoque de Víctor es, cuando escribo:
Date someValidDate = new Date() - (20*365)
BlogMessage.metaClass.setDateCreated = {
Date d ->
delegate.@dateCreated = someValidDate
}
Obtengo la siguiente excepción:
groovy.lang.MissingFieldException: No such field: dateCreated for class: pl.net.yuri.league.blog.BlogMessage
Cuando probé
Message.metaClass.setDateCreated = {
Date d ->
delegate.@dateCreated = someValidDate
}
Script va bien, pero desafortunadamentedateCreated
no está siendo alterado.