La Web Imágenes Vídeos Noticias Grupos Libros Gmail Más »
Grupos visitados recientemente | Ayuda | Acceder
Página principal de Grupos de Google
org.hibernate.TransientObjectE xception: object references an unsaved transient instance - save the transient instance before flushing:
En este grupo hay demasiados temas que deben mostrarse primero. Para que este aparezca al principio de la lista, debes descartar esta opción para alguno de los anteriores.
Error al procesar tu solicitud. Por favor, inténtalo de nuevo.
marcar
  1 mensaje - Ocultar todos  -  Traducir todo al Traducido (ver todos los originales)
El grupo al cual envías entradas es un grupo Usenet. Si envías mensajes a este grupo, cualquier usuario de Internet podrá ver tu dirección de correo electrónico
Tu respuesta no se ha enviado.
Tu entrada se ha publicado correctamente.
 
De:
Para:
Cc:
Seguimiento:
Añadir Cc | Añadir seguimiento | Editar asunto
Asunto:
Validación:
Con fines de verificación, escribe los caracteres que veas en la imagen siguiente o los números que escuches haciendo clic en el icono de accesibilidad. Escucha y escribe los números que oyes.
 
Ivan B  
Ver perfil   Traducir al Traducido (ver original)
 Más opciones 12 feb 2008, 17:31
De: Ivan B <ibo...@gmail.com>
Fecha: Tue, 12 Feb 2008 15:31:19 -0800 (PST)
Local: Mart 12 feb 2008 17:31
Asunto: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing:
Hi,

I have 3 classes defined as such (I am leaving out getters and
setters:

@Entity
@Table(name = "ClassA")
public class ClassA {
        @Id
        @GeneratedValue
        @Column(name = "CLASSA_ID")
        private long id;

        private String data;

        @org.hibernate.annotations.CollectionOfElements
        @JoinTable(name = "CLASSA_MEMBERS", joinColumns = @JoinColumn(name =
"CLASSA_ID"))
        private Set<ClassB> children = new HashSet<ClassB>(0);

        @org.hibernate.annotations.CollectionOfElements
        @JoinTable( name = "CLASSC_MEMBERS", joinColumns = @JoinColumn(name =
"CLASSA_ID"))
        @Cascade( {org.hibernate.annotations.CascadeType.SAVE_UPDATE,
                           org.hibernate.annotations.CascadeType.PERSIST} )
        private Set<ClassC> children2 = new HashSet<ClassC>(0);

}

@Embeddable
public class ClassB {
        @Parent
        private ClassA parent;

        private String data;

}

@Entity
@Table(name = "ClassC")
public class ClassC {

        @Id
        @GeneratedValue
        @Column(name = "CLASSC_ID")
        private long id;

        private String data;

}

If I execute this code I get the above (re: subject) error.

@Test
        public void testCreateClassA() {
                Random rnd = new Random();
                Transaction tx = session.beginTransaction();

                Set<ClassB> set = new HashSet<ClassB>(0);
                for (int i = 0; i < 10; i++) {
                        ClassB child = new ClassB(String.valueOf(i));
                        set.add(child);
                }

                Set<ClassC> set2 = new HashSet<ClassC>(0);
                for (int i = 0; i < 10; i++) {
                        ClassC child = new ClassC(String.valueOf(i));
                        set2.add(child);
//                      session.save(child);
                }

                ClassA clazz = new ClassA(String.valueOf(rnd.nextInt()), set);
                clazz.setChildren2(set2);
                session.save(clazz);
                tx.commit();
        }

If I remove the commented out line in my @Test everything works fine.
Why do I have to do this? I thought that @Cascade annotation should
take care of the problem?


    Responder al autor    Reenviar  
Debes registrarte antes de enviar mensajes.
Para enviar una entrada, antes deberás formar parte del grupo.
Antes de enviar entradas, actualiza tu alias en la configuración de la suscripción.
No dispones del permiso necesario para enviar entradas.
Fin de los mensajes
« Volver a “Debates” « Tema más reciente     Tema anterior »

Crear un grupo - Grupos de Google - Página principal de Google - Condiciones del servicio - Política de privacidad
©2009 Google