import mx.com.proyecto
class Tutor {
String nombres
String paterno
String materno
Integer edad
static constraints = {
nombres maxSize: 150, nullable: false, blank: false
paterno maxSize: 80, nullable: false, blank: false
materno maxSize: 80, nullable: true, blank: false
}
}
Pero quizá nos interese tener nuestra entidad un poco mas amigable y legible agrupando los tres elementos nombres, paterno y materno dentro de un mismo POJO y seguirla mapeando a las mismas columnas de una sola tabla.
La regla de oro está en definir el POJO en el mismo archivo Tutor.groovy o en un archivo separado pero dentro de la carpeta /src/groovy/ (Nombre.groovy).
/grails-app/domain/Tutor.groovy
import mx.com.proyecto
class Tutor {
Nombre nombre
Integer edad
}
/src/groovy/Nombre.groovy
import mx.com.proyecto
class Nombre {
String nombres
String paterno
String materno
static constraints = {
nombres maxSize: 150, nullable: false, blank: false
paterno maxSize: 80, nullable: false, blank: false
materno maxSize: 80, nullable: true, blank: false
}
static mapping = {
nombres column: 'nombres'
paterno column: 'paterno'
materno column: 'materno'
}
}
Si no colocamos el apartado mapping en la nueva clase Nombre e indicando como se mapearían las propiedades a las columnas de la tabla, los nombres de columna que tendríamos en la tabla serían:
[nombreDePropiedadTutor] + _ + [nombreDePropiedadNombre]
Esto es: nombre_nombres, nombre_paterno y nombre_materno, lo cual funcionaría solo para cuando quieras embeber el mismo POJO varias veces en la misma entidad.
Tu puedes seguir haciendo búsquedas con las propiedades de ese objeto, instanciando un objeto y asignando el valor en la propiedad que te interesa usar para buscar en la tabla Tutor. Por ejemplo:
Nombre rebeca = new Nombre()
rebeca.setNombres('rebeca')
Tutor.findAllByNombre(rebeca)
También puedes agregar métodos que te permita operar con las columnas de Nombre, ejemplo:
String obtenerPorNombre() {
return nombres + ' ' + paterno + ' ' + materno
}
String obtenerPorPaterno() {
return paterno + ' ' + materno + ' ' + nombres
}
No hay comentarios:
Publicar un comentario
Que opinas sobre esta publicación?