Secciones

Artículos para tus primeros pasos

Si estás empezando a introducirte en el mundo de Groovy y Grails, no te pierdas nuestros artículos básicos: 

Entrevistas con los expertos
 

Los protagonistas te cuentan de qué van los proyectos más importantes del mundo Groovy:


Un proyecto de:
ImaginaWorks
Campus Escuela de Groovy

Grails

Como hacer relacion N-N

galorn - sábado 17/07/2010
Hola a todos:
Estoy mirando como hacer una relación N-N en el libro de manual de desarrollo web con grails, y pone exactamente asi:
 
def a = new Asociacion(nombre:'javaHispano')
.addToMiembros(new Persona(nombre:'Nacho Brito'))
.save()
 
Y eso aplicado a mi web, lo que hay son SessionChat por un lado y User por otro, entonces quiero relacionar sesiones con usuarios (el belongsTo esta en user, por lo tanto la relacion esta gobernada por SessionChat): 
 
//hago un get porque SessionChat ya ha sido creada anteriormente 
a = SessionChat.get(seleccionarSesion[i])
.addToUsuarios(new User(name:nombreUsuario))
.save()
 
Pero no me funciona. No se si tengo que crear un metodo "addToUsuarios" en la clase SessionChat, o que :S 

Re: Como hacer relacion N-N

Pilli - lunes 19/07/2010

Buenas.

El método addToUsuarios() te lo crea GORM automaticamente según tu modelo de datos.

Puedes probar a hacerlo todo paso a paso y ver como queda. Por ejemplo

a = SessionChat.get(seleccionarSesion[i])

Compruebas que esté bien.

a.addToUsuarios(new User(name:nombreUsuario))

Compruebas.

a.save()

Compruebas.

No se me ocurre nada más.

Pon el módelo de datos a ver si veo algún fallo/error.

Un saludo.

Re: Como hacer relacion N-N

galorn - lunes 19/07/2010

Pues estoy probando de varias maneras y no lo consigo.

 Te pongo el modelo de datos:

 

class SessionChat {

 

Integer tiempoSesion;

Integer numeroParticipantes;

static hasMany = [Usuarios:User]

public SessionChat() {

super();

// TODO Auto-generated constructor stub

}

static constraints = {

tiempoSesion(min:1)

numeroParticipantes(min:1)

}

}

 

class User {

 

String name;

static hasMany = [Sesiones:SessionChat]

static belongsTo = SessionChat

    static constraints = {

     name(blank:false,size:2..50)

    }

}

 

Y aquí pongo el código exacto que estoy intentando hacer en el controlador (que lo he modificado un poco de como lo he puesto antes):

 

 def p = new SessionChat(tiempoSesion:tiempoInt,numeroParticipantes:numP) 

 p.save(flush:true)

//ME GUARDA BIEN LA SESSIONCHAT!!! pero lo siguiente me da error en el addToUsuarios:

 for(int i=0; i<numP; i++){

       p.addToUsuarios(new User(name:nombreParticipanteSesion[i]))

}

 

Re: Como hacer relacion N-N

galorn - lunes 19/07/2010

Pues estoy probando de varias maneras y no lo consigo.

 Te pongo el modelo de datos:

 

class SessionChat {

 

Integer tiempoSesion;

Integer numeroParticipantes;

static hasMany = [Usuarios:User]

public SessionChat() {

super();

// TODO Auto-generated constructor stub

}

static constraints = {

tiempoSesion(min:1)

numeroParticipantes(min:1)

}

}

 

class User {

 

String name;

static hasMany = [Sesiones:SessionChat]

static belongsTo = SessionChat

    static constraints = {

     name(blank:false,size:2..50)

    }

}

 

Y aquí pongo el código exacto que estoy intentando hacer en el controlador (que lo he modificado un poco de como lo he puesto antes):

 

 def p = new SessionChat(tiempoSesion:tiempoInt,numeroParticipantes:numP) 

 p.save(flush:true)

//ME GUARDA BIEN LA SESSIONCHAT!!! pero lo siguiente me da error en el addToUsuarios:

 for(int i=0; i<numP; i++){

       p.addToUsuarios(new User(name:nombreParticipanteSesion[i]))

}

 

Re: Como hacer relacion N-N

galorn - lunes 19/07/2010

Pues estoy probando de varias maneras y no lo consigo.

 Te pongo el modelo de datos:

 

class SessionChat {

 

Integer tiempoSesion;

Integer numeroParticipantes;

static hasMany = [Usuarios:User]

public SessionChat() {

super();

// TODO Auto-generated constructor stub

}

static constraints = {

tiempoSesion(min:1)

numeroParticipantes(min:1)

}

}

 

class User {

 

String name;

static hasMany = [Sesiones:SessionChat]

static belongsTo = SessionChat

    static constraints = {

     name(blank:false,size:2..50)

    }

}

 

Y aquí pongo el código exacto que estoy intentando hacer en el controlador (que lo he modificado un poco de como lo he puesto antes):

 

 def p = new SessionChat(tiempoSesion:tiempoInt,numeroParticipantes:numP) 

 p.save(flush:true)

//ME GUARDA BIEN LA SESSIONCHAT!!! pero lo siguiente me da error en el addToUsuarios:

 for(int i=0; i<numP; i++){

       p.addToUsuarios(new User(name:nombreParticipanteSesion[i]))

}

 

Re: Como hacer relacion N-N

galorn - lunes 19/07/2010

Pues estoy probando de varias maneras y no lo consigo.

 Te pongo el modelo de datos:

 

class SessionChat {

 

Integer tiempoSesion;

Integer numeroParticipantes;

static hasMany = [Usuarios:User]

public SessionChat() {

super();

// TODO Auto-generated constructor stub

}

static constraints = {

tiempoSesion(min:1)

numeroParticipantes(min:1)

}

}

 

class User {

 

String name;

static hasMany = [Sesiones:SessionChat]

static belongsTo = SessionChat

    static constraints = {

     name(blank:false,size:2..50)

    }

}

 

Y aquí pongo el código exacto que estoy intentando hacer en el controlador (que lo he modificado un poco de como lo he puesto antes):

 

 def p = new SessionChat(tiempoSesion:tiempoInt,numeroParticipantes:numP) 

 p.save(flush:true)

//ME GUARDA BIEN LA SESSIONCHAT!!! pero lo siguiente me da error en el addToUsuarios:

 for(int i=0; i<numP; i++){

       p.addToUsuarios(new User(name:nombreParticipanteSesion[i]))

}

 

Re: Como hacer relacion N-N

galorn - lunes 19/07/2010

Pues estoy probando de varias maneras y no lo consigo.

 Te pongo el modelo de datos:

 

class SessionChat {

 

Integer tiempoSesion;

Integer numeroParticipantes;

static hasMany = [Usuarios:User]

public SessionChat() {

super();

// TODO Auto-generated constructor stub

}

static constraints = {

tiempoSesion(min:1)

numeroParticipantes(min:1)

}

}

 

class User {

 

String name;

static hasMany = [Sesiones:SessionChat]

static belongsTo = SessionChat

    static constraints = {

     name(blank:false,size:2..50)

    }

}

 

Y aquí pongo el código exacto que estoy intentando hacer en el controlador (que lo he modificado un poco de como lo he puesto antes):

 

 def p = new SessionChat(tiempoSesion:tiempoInt,numeroParticipantes:numP) 

 p.save(flush:true)

//ME GUARDA BIEN LA SESSIONCHAT!!! pero lo siguiente me da error en el addToUsuarios:

 for(int i=0; i<numP; i++){

       p.addToUsuarios(new User(name:nombreParticipanteSesion[i]))

}

 

Re: Como hacer relacion N-N

galorn - lunes 19/07/2010

Pues estoy probando de varias maneras y no lo consigo.

 Te pongo el modelo de datos:

 

class SessionChat {

 

Integer tiempoSesion;

Integer numeroParticipantes;

static hasMany = [Usuarios:User]

public SessionChat() {

super();

// TODO Auto-generated constructor stub

}

static constraints = {

tiempoSesion(min:1)

numeroParticipantes(min:1)

}

}

 

class User {

 

String name;

static hasMany = [Sesiones:SessionChat]

static belongsTo = SessionChat

    static constraints = {

     name(blank:false,size:2..50)

    }

}

 

Y aquí pongo el código exacto que estoy intentando hacer en el controlador (que lo he modificado un poco de como lo he puesto antes):

 

 def p = new SessionChat(tiempoSesion:tiempoInt,numeroParticipantes:numP) 

 p.save(flush:true)

//ME GUARDA BIEN LA SESSIONCHAT!!! pero lo siguiente me da error en el addToUsuarios:

 for(int i=0; i<numP; i++){

       p.addToUsuarios(new User(name:nombreParticipanteSesion[i]))

}

 

Re: Como hacer relacion N-N

galorn - lunes 19/07/2010
Perdon por ponerlo varias veces, se me ha quedado colgada la web y al darle varias veces al enviar ha pasado esto :)

Re: Como hacer relacion N-N

galorn - lunes 19/07/2010

SOLUCIONADO

La cuestión era poner:

 static hasMany = [Sesiones:SessionChat] con minuscula, o sea static hasMany = [sesiones:SessionChat]

y lo mismo con el otro hasMany en SessionChat...

 Un saludo a todos! 

Re: Como hacer relacion N-N

Pilli - martes 20/07/2010

Me alegro :P

Me vendrá bien tu solución, por que seguro que me va a pasar.

Si alguién de los que tienen más experiencia nos puede explicar el porqué sería de agradecer. Supongo que será cosa de la generación automática de codigo.

Un saludo.

Responder al hilo | Volver al foro "Grails" | Volver a los foros