Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/10/2013, 14:36
oskrok
 
Fecha de Ingreso: febrero-2006
Mensajes: 43
Antigüedad: 18 años, 2 meses
Puntos: 1
Respuesta: Relaciones OneToMany Bidireccionales con Hibernate;

Muchas gracias por interesarte:

Código PHP:
package com.omb.bets.model.hibernate;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 * Clase de utilidad para obtener la sesion de hibernate.
 * 
 * @author Chuidiang
 * 
 */
public class HibernateUtil {

    private static final 
SessionFactory sessionFactory;

    static {
        try {
         
// Si no ponemos fichero, intenta cargar "/hibernate.cfg.xml" en el raiz
            //sessionFactory = new AnnotationConfiguration().configure(new File("hibernate.cfg.xml")).buildSessionFactory();
            
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

        } catch (
Throwable ex) {
            
// Log exception!
            
throw new ExceptionInInitializerError(ex);
        }
    }

    public static 
Session getSession() throws HibernateException {
        return 
sessionFactory.openSession();
    }

No creo que sea culpa nada de la clase HibernateUtil, ya que sólo carga el fichero xml de configuración y obtiene una sesion. Y para insertar en las dos tablas funciona.

El problema es al descomentar la anotación de la relación:
@OneToMany(mappedBy="message_status")
private Set<Message> messages;

En el ejemplo está mal representado lo que quiero hacer. Tengo un formulario de contacto que inserta el mensaje en la tabla message. Como hay que insertarlo con un estado, por ejemplo "No leído", tendríamos que recuperar dicho estado mediante id. Asignarselo al mensaje e insertarlo en la tabla messages.

Soy bastante novato en spring por el momento y no se si estoy haciendolo bien. ¿Para este tipo de relación conviene una relacion bidireccional?¿Penalizan el rendimiento de la aplicación?

Un saludo y muchas gracias.