Grails 2.0 y object references an unsaved transient instance - save the transient instance before flushing: myapp.Estadistica

380 views
Skip to first unread message

Jose Mª Fernandez

unread,
Dec 20, 2011, 3:08:37 PM12/20/11
to grailsenc...@googlegroups.com
Buenas a todos,

pues me encuentro en el doloroso paso de migrar una app de 1.3.7 a 2.0.0. Y me ha surgido un expediente X...

Resulta que esto funcionaba perfectamente en 1.3.7 y ahora me sale este error de referencia no guardada pero... el modelo es:
class Alumno {
  String nombre
  ....
  Estadistica estadistica
}

class Estadistica {
  String nombre
  ...
  static belongsTo = [alumno:Alumno]
}

Pues bien, recibo bien de un formulario
incluso hago alumnoInstance.estadistica.nombre y me devuelve el nombre correctamente y hace validate!!!

pero al hacer save.....
object references an unsaved transient instance - save the transient instance before flushing: appcae.Estadistica

Ha cambiado algo Grails 2.0?

que puede ser?

me tiene mosqueado esto...

--
José María Fernández

Iván Fernández Perea

unread,
Dec 20, 2011, 4:51:15 PM12/20/11
to grailsenc...@googlegroups.com

Buenas,

Que te devuelve tuObj.isAttached()?

Saludos

--
Has recibido este mensaje porque estás suscrito al grupo "grailsEnCastellano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a grailsenc...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a grailsencastell...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/grailsencastellano?hl=es.

David Santamaria

unread,
Dec 21, 2011, 3:33:01 AM12/21/11
to grailsenc...@googlegroups.com
Como añades la estadistica al Alumno? Lo haces en un controller?



--
José María Fernández

--
Has recibido este mensaje porque estás suscrito al grupo "grailsEnCastellano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a grailsenc...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a grailsencastell...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/grailsencastellano?hl=es.



--
David.

Jose Mª Fernandez

unread,
Dec 21, 2011, 12:44:45 PM12/21/11
to grailsenc...@googlegroups.com
Gracias por contestar.
Iván, justo antes del save isAttached devuelve false
y David, sí, es un controlador... hago def alumno = new Alumno(parmas) directamente en el gsp tengo un select con name estadistica.nombre ....
José María Fernández

Iván Fernández Perea

unread,
Dec 21, 2011, 12:55:17 PM12/21/11
to grailsenc...@googlegroups.com
Buenas,

si el objeto estadistica en tu caso no está attached necesitarías hacer merge en lugar de save. Esto podría ser debido a que cuando te traes el objeto estadística desde alumno lo hagas en otra petición y por lo tanto dicho objeto ya no este en el contexto de persistencia y (creo) es por lo cual te lanza esa excepción.

Echale un ojo a la documentación de Grails (http://grails.org/doc/latest/ref/Domain%20Classes/merge.html) y prueba con el merge. 

Lo que no entiendo es como antes si te funcionaba. A lo mejor es alguna modificación sobre Grails 2.0 que se me escapa ...

Un saludo. 

Alberto Vilches

unread,
Dec 21, 2011, 12:57:07 PM12/21/11
to grailsenc...@googlegroups.com
puedes poner el formulario y el controlador por aquí? tiene que funcionar a la primera sin hacer cosas raras...

2011/12/21 Iván Fernández Perea <ivan.ferna...@gmail.com>



--
Un saludo.
Alberto Vilches
Twitter: @albertovilches

Jose Mª Fernandez

unread,
Dec 21, 2011, 1:22:33 PM12/21/11
to grailsenc...@googlegroups.com
Si hago merge en el objeto estadistica entonces se pone a null......... y entonces si que peta...

me tiene esto.. en fin...................

Iván Fernández Perea

unread,
Dec 21, 2011, 1:27:19 PM12/21/11
to grailsenc...@googlegroups.com
uhmm ... es un poco probar a ciegas, pero:
- haz primero un attach() sobre el objeto estadistica.
- haz un save() de Alumno.

Un saludo.
Iván.

Jose Mª Fernandez

unread,
Dec 21, 2011, 1:35:41 PM12/21/11
to grailsenc...@googlegroups.com
Acabo de volver a 1.3.7 y funciona correctamente... lo cual me da ganas de pegarme un tiro XD.
Voy a probar Iván.

Jose Mª Fernandez

unread,
Dec 21, 2011, 3:39:39 PM12/21/11
to grailsenc...@googlegroups.com
Iván, attach tampoco.

La solución es:

def estadistica = new Estadistica(params)
def alumno = new Alumno(params)       
estadistica.alumno = alumno
alumno.estadistica = estadistica

alumno.save()

vaya.. lo que antes hacía con:

def alumno = new Alumno(params)       
alumno.save()
                   
El GSP es identico eh... abajo 1.3.7 arriba 2.0.0

Pues si que han mejorado la productividad en Grails 2.0... :)

Gracias a todos por contestar, si os pasa ya sabéis!       
--
José María Fernández

Iván López

unread,
Dec 21, 2011, 4:24:51 PM12/21/11
to grailsenc...@googlegroups.com
2011/12/21 Jose Mª Fernandez <josm...@gmail.com>

Acabo de volver a 1.3.7 y funciona correctamente... lo cual me da ganas de pegarme un tiro XD.

Buenas,

yo pienso que todavía grails 2.0 está un poco verde aunque hayan liberado ya la versión final. Esta semana pasada hemos tenido la semana de proyectos personales en el trabajo y hemos estado haciendo una aplicación con grails 2.0.RC3. ¿El resultado?. El miércoles dimos marchas atrás a la 1.3.7. Hemos encontrado muchos bugs y cosas muy raras que en la 1.3.7 no pasan. Para nosotros ha sido una gran decepción, aunque al menos nos ha servido para descartar grails 2.0 para un proyecto que empezaremos en enero y hacerlo en la 1.3.7. 

Creo que hasta dentro de unos meses que no saquen una 2.0.X ó 2.1 no nos vamos a plantear usar la nueva 2.0. Y eso que teníamos muchas ganas, pero así es imposible. Otra cosa que no nos gusta es la nueva consola del run-app. Antes le dabas al intro y hacías scroll como si estuvieras haciendo un tail -f a un archivo. Ahora eso no se puede hacer y es más complicado ver el log. En fin, esperaremos unos meses a ver qué ocurre...

Saludos, Iván.

Jose Mª Fernandez

unread,
Dec 21, 2011, 4:32:38 PM12/21/11
to grailsenc...@googlegroups.com
Hola Iván!

Estoy contigo, yo acabo de volver atrás. Y el proyecto que voy a empezar también lo empiezo con 1.3.7. La verdad es que hay bugs muy raros.. lo del totalCount de las criterias me parece absurdo.. Esta tonteria que os he comentado me ha tenido todo un día perdiendo el tiempo.
Sí, me parece a mi que para llevar tantas liberaciones, sigue siendo muy buggy aún... :)

Saludos!

--
Has recibido este mensaje porque estás suscrito al grupo "grailsEnCastellano" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a grailsenc...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a grailsencastell...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/grailsencastellano?hl=es.



--
José María Fernández

Iván Fernández Perea

unread,
Dec 21, 2011, 4:34:30 PM12/21/11
to grailsenc...@googlegroups.com
vaya!!. Yo también estaba pensando migrar una aplicación de 1.3.7 a 2.0.0 pero creo que ahora me lo tendré que pensar otra vez ...

Jose Mª Fernandez

unread,
Dec 21, 2011, 4:40:21 PM12/21/11
to grailsenc...@googlegroups.com
ya os habréis dando cuenta...  pero... cuando se pone a resolver dependencias y bajar jars, me da la sensación de que está descargando internet entero!! se tira ahí un rato considerable.

Quizá sería interesante que fueramos comentado las cosas raras que vamos descubriendo!

Jose Mª Fernandez

unread,
Feb 15, 2012, 1:40:25 PM2/15/12
to grailsenc...@googlegroups.com
Hola a todos

reflotando este mensaje, para confirmar que estos problemas ya se han solucionado en la versión 2.0.1.

he pasado tests, y he probado algunas secciones a mano de la aplicación y todo funciona igual de bien que con 1.3.7

hice bien en esperar a esta versión y no migrar a 2.0.0 :)

Ya estáis todos usando 2.0.1? :)

Saludos!
--
José María Fernández
Reply all
Reply to author
Forward
0 new messages