Tengo dos dominios que forman parte de un barco de relaciones uno a muchos. Me preguntaba cómo puedo consultar al niño para los padres FK? abajo es el pseudo-código para padre/hijoGrails, cómo buscar por un registro mediante su clave externa
Padres:
class AlumProfile {
String firstName
String lastName
static hasMany = [alumLanguage : AlumLanguage]
static mapping = {
cache true
id generator: 'assigned'
columns {
firstName type:'text'
lastName type:'text'
}
//
}
static constraints = {
firstName (nullable:true)
lastName (nullable:true)
}
}
Niño:
class AlumLanguage {
String name
String level
static belongsTo = [alumProfile:AlumProfile]
static mapping = {
cache true
columns {
name type:'text'
level type:'text'
}
}
static constraints = {
name(nullable:true)
level(nullable:true)
}
}
Aunque no explícitamente crear el FK, griales se encarga de la creación que la base de datos MySQL por sí mismo. Pero, cuando quiero consultar al niño por el FK así:
if(AlumLanguage.findByNameAndAlumProfileId(language.'language'.toString(), 'jIi-hRi4cI')==null){
//do something
}
consigo un error: No se encontró para Nombre [alumProfileId] para la clase [mgr.AlumLanguage clase]
¿Alguna sugerencia sobre la propiedad cómo lograr esto?
gracias Jason
Esto devuelve una lista. Necesito que me devuelvan el objeto AlumLanguages, para poder editar/eliminar instancias de él – jason
Actualizado. Sin embargo, si lo va a hacer de esa manera, probablemente quiera declarar AlumProfile.alumLanguage como un 'Conjunto' para imponer miembros únicos. –
¡Gracias, eso fue todo! por curiosidad, ¿a qué te refieres con "declarar AlumProfile.alumLanguage como conjunto"? ¡Gracias de nuevo! – jason