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?