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

Problema con Hibernate

JoseAngel - martes 03/11/2009

Hola grupo,

Tengo mi servicio:

class AdministradorService {

    boolean transactional = true

    def altaUsuariosFichero(params) {
      
        File fichero = new File(params)
        Grupo grupoNulo = new Grupo(null)
        def numeroUsuarios = 0

        fichero.splitEachLine(';'){ lista ->
            if (lista[0] != 'NOMBRE') {       
                new Usuario(nif: lista[3],
                    nombre: lista[0],
                    apellido1: lista[1],
                    apellido2: lista[2],
                    contrasegna: "",
                    correo: lista[10],
                    direccion: "",
                    telefonoFijo: "",
                    telefonoMovil: "",
                    codigoPostal: "",
                    correoVisible: true,
                    recibirNotificaciones: true,
                    grupo: grupoNulo).save()

                numeroUsuarios++
            }
        }
        return numeroUsuarios
    }
}

Como al introducir un usuario desde un fichero no conozco al grupo al que va a pertenecer, le pongo un grupo nulo. Esta chapucilla me sirve, mete todos los usuarios y no da ningún error al actualizar la vista, pero en la consola de NetBeans aparece este mensaje:

2009-11-03 00:56:24,708 [3453776@qtp0-0] ERROR errors.GrailsExceptionResolver  - object references an unsaved transient instance - save the transient instance before flushing: Grupo; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: Grupo
org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: Grupo; nested exception is org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: Grupo
         ...

 Por otra parte si en vez de: Grupo grupoNulo = new Grupo(null) pongo Grupo grupoNulo = new Grupo() me da un error en la vista pero si la actualizo me salen los nuevos usuarios que grabe del fichero. No se si es importante pero por si acaso lo pongo.

¿Sabe alguien como evitar el mensaje de NetBeans?

 

Saludos y gracias!!

Re: Problema con Hibernate

Nacho - martes 03/11/2009

Hola,

podrías simplemente añadir nullable:true en las constraints para la propiedad grupo. De esta manera ya no es obligatorio proporcionarlo.

 

Saludos,

Re: Problema con Hibernate

JoseAngel - martes 03/11/2009

Muchas gracias! Había pasado por alto el uso de constraints.

Saludos.

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