Quien ha trabajado con hibernate y ha tenido este problema, bueno, yo para empezar, asi que como logre hacerlo voy a publicar la solución, bien sencillo, despues de generar con Hibernate Tools los pojos, hbm.xml y los DAO, eso es sencillo, pondre dos clases de ejemplo.
En este ejemplo tendremos 3 tablas, Servicio, Variable y Servicio_Variable, que es la tabla que relaciona muchos servicios con muchas variables.
Clase Servicio
public class BmServicios implements java.io.Serializable { private int idServicio; private String nombre; private Set<bmVariable> bmVariables = new HashSet<bmVariable>(0); public BmServicios() { } public BmServicios(int idServicio, String nombre) { this.idServicio = idServicio; this.nombre = nombre; } public BmServicios(int idServicio,Set<bmVariable> bmVariables, { this.idServicio = idServicio; this.nombre = nombre; } public int getIdServicio() { return this.idServicio; } public void setIdServicio(int idServicio) { this.idServicio = idServicio; } public String getNombre() { return this.nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public Set<bmVariable> getBmVariables() { return this.bmVariables; } public void setBmVariables(Set<bmVariable> bmVariables) { this.bmVariables = bmVariables; } }
Clase Variable
public class BmVariable implements java.io.Serializable { private int idVariable; private String nombre; private String descripcion; private String tipoDeDato; private Set<bmServicios> bmServicioses = new HashSet<bmServicios>(0); public BmVariable() { } public BmVariable(int idVariable) { this.idVariable = idVariable; } public BmVariable(int idVariable, String nombre, String descripcion, String tipoDeDato, Set<bmServicios> bmServicioses) { this.idVariable = idVariable; this.nombre = nombre; this.descripcion = descripcion; this.tipoDeDato = tipoDeDato; this.bmServicioses = bmServicioses; } public int getIdVariable() { return this.idVariable; } public void setIdVariable(int idVariable) { this.idVariable = idVariable; } public String getNombre() { return this.nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getDescripcion() { return this.descripcion; } public void setDescripcion(String descripcion) { this.descripcion = descripcion; } public String getTipoDeDato() { return this.tipoDeDato; } public void setTipoDeDato(String tipoDeDato) { this.tipoDeDato = tipoDeDato; } public Set<bmServicios> getBmServicioses() { return this.bmServicioses; } public void setBmServicioses(Set<bmServicios> bmServicioses) { this.bmServicioses = bmServicioses; } }
Ahora, como hago para guardar unr registro en Servicio_Variable, si el Hibernate Tools no me genera un pojo para esa tabla (ojo, no la genera porque no tiene mas que los ID (PK) de las tablas Servicio y Variable.
Esta es la solución
//Buscamos registros de ejemplo en Servicio BmServicio servicio= (BmServicio ) session.get(BmServicio .class, new Integer(2)); //Buscamos registros de ejemplo en Variable BmVariable variable= (BmVariable ) session.get(BmVariable .class, new Integer(2)); //Creamos una variable Set Generica en base al Pojo Servicio Set<bmServicio> setServicio = new HashSet<bmServicio>(); //Igual para Variable Set<bmVariable> setVariable = new HashSet<bmVariable>(); setVariable .add(variable); setServicio .add(servicio); BmVariable .setBmServicio(setServicio); //Luego hacemos un session.save(), eso es lo que hacen estas funciones respectivamente para cada tabla. crearVariable(variable); crearSerivicio(servicio); //Pueden crear un crearRegistro mas generico, para reutilizar codigo, (Gracias Comando 83) public static void crearRegistro(Object tabla) { Transaction tx = null; Session session = HibernateUtil.getSession(); try { tx = session.beginTransaction(); session.save(tabla); //JOptionPane.showConfirmDialog(null, "codigo: "+((Sistema)tabla).getCodigo()); tx.commit(); } catch (HibernateException e) { e.printStackTrace(); if (tx != null && tx.isActive()) tx.rollback(); } }
Y listo, se guarda el registro en Variable_Sesion.


Últimos comentarios