2016-07-07 4 views
0

у меня есть эта ошибка, пожалуйста, мне нужна помощь с этим, не работает, я не знаю, где проблемаHibernateException: незаконно пытались связать прокси-сервер с двумя открытыми Sessions

org.hibernate.HibernateException: illegally attempted to associate a proxy with two open Sessions 
at org.hibernate.proxy.AbstractLazyInitializer.setSession(AbstractLazyInitializer.java:123) 
at org.hibernate.engine.internal.StatefulPersistenceContext.reassociateProxy(StatefulPersistenceContext.java:568) 
at org.hibernate.engine.internal.StatefulPersistenceContext.reassociateIfUninitializedProxy(StatefulPersistenceContext.java:533) 
at org.hibernate.event.internal.ProxyVisitor.processEntity(ProxyVisitor.java:49) 
at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:124) 
at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:82) 
at org.hibernate.event.internal.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:76) 
at org.hibernate.event.internal.AbstractVisitor.process(AbstractVisitor.java:143) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:310) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:244) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:109) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 
at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:680) 
at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:672) 
at org.hibernate.engine.spi.CascadingActions$5.cascade(CascadingActions.java:235) 
at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:352) 
at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:295) 
at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:161) 
at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:118) 
at org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:432) 
at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:265) 
at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:194) 
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:137) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:209) 
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:194) 
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49) 
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90) 
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:711) 
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:703) 
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:698) 
at hibernate.mapeo.dao.rh.Datos_LaboralesDAO.AgregarDatos(Datos_LaboralesDAO.java:32) 
at Sistema.Rh.VEmpleados.btnGuardarActionPerformed(VEmpleados.java:1557) 
at Sistema.Rh.VEmpleados.access$800(VEmpleados.java:92) 
at Sistema.Rh.VEmpleados$9.actionPerformed(VEmpleados.java:702) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) 
at java.awt.Component.processMouseEvent(Component.java:6535) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
at java.awt.Component.processEvent(Component.java:6300) 
at java.awt.Container.processEvent(Container.java:2236) 
at java.awt.Component.dispatchEventImpl(Component.java:4891) 
at java.awt.Container.dispatchEventImpl(Container.java:2294) 
at java.awt.Component.dispatchEvent(Component.java:4713) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
at java.awt.Container.dispatchEventImpl(Container.java:2280) 
at java.awt.Window.dispatchEventImpl(Window.java:2750) 
at java.awt.Component.dispatchEvent(Component.java:4713) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
at java.awt.EventQueue.access$500(EventQueue.java:97) 
at java.awt.EventQueue$3.run(EventQueue.java:709) 
at java.awt.EventQueue$3.run(EventQueue.java:703) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 
at java.awt.EventQueue$4.run(EventQueue.java:731) 
at java.awt.EventQueue$4.run(EventQueue.java:729) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

Помоги мне с этой проблемой.

Это HibernateUtil.java

package hibernate.mapeo; 

import org.hibernate.SessionFactory; 
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 
import org.hibernate.cfg.Configuration; 

public class HibernateUtil { 

private static final SessionFactory sessionFactory = builSessionFactory(); 

private static SessionFactory builSessionFactory(){ 
    try { 
     Configuration configuration = new Configuration(); 

     return configuration.configure().buildSessionFactory(
     new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build()); 
    }catch (Throwable ex) { 
     System.err.println("El inicio de la sesion fallo." +ex); 
     throw new ExceptionInInitializerError(ex); 
    } 
} 

public static SessionFactory getSessionFactory() { 
    return sessionFactory; 
} 
} 

это Sucursal, hbm.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="entidades.Rh.Sucursal" table="rh.SUCURSAL"> 
    <id column="idsucursal" name="idsucursal"> 
     <generator class="increment"> 
     </generator> 
    </id> 
    <property name="sucursal"/> 
    <property name="direccion"/> 
    <many-to-one cascade="save-update" class="entidades.Configuracion.Empresas" column="idempresa" fetch="select" name="empresa">   
    </many-to-one> 
    <many-to-one cascade="save-update" class="entidades.ConfRegional.Sector" column="idsector" fetch="select" name="sector">   
    </many-to-one> 
    <set fetch="select" inverse="true" lazy="true" name="usuarios" table="usuarios"> 
     <key> 
      <column name="idsucursal"/> 
     </key> 
     <one-to-many class="entidades.Seguridad.Usuarios"/> 
    </set> 
    <set fetch="select" inverse="true" cascade="all" lazy="true" name="datos_laborales" table="datos_laborales"> 
     <key> 
      <column name="idsucursal"/> 
     </key> 
     <one-to-many class="entidades.Rh.Datos_Laborales"/> 
    </set> 
</class> 

Datos_LaboralesDAO.java

package hibernate.mapeo.dao.rh; 

import entidades.Rh.Datos_Laborales; 
import hibernate.mapeo.HibernateUtil; 
import java.util.List; 
import org.hibernate.HibernateException; 
import org.hibernate.Session; 
import org.hibernate.Transaction; 
import org.hibernate.criterion.Order; 

public class Datos_LaboralesDAO { 


private Session sesion; 
private Transaction tx; 

public boolean AgregarDatos(Datos_Laborales datos_laborales) throws HibernateException{ 

    boolean resp = false; 
    try { 
     iniciarOperacion(); 
     //tr.setTimeout(2); 
     sesion.save(datos_laborales); 
     tx.commit(); 
     resp = true; 
    } catch (HibernateException he) { 
     tx.rollback(); 
     he.printStackTrace(); 
     resp = false; 
     throw he; 
    } finally { 
     if (sesion.isOpen()) { 
      sesion.close(); 
     } 
    } 
    return resp; 
} 

public boolean ActualizarDatos(Datos_Laborales datos_laborales) throws HibernateException{ 

    boolean resp = false; 
    try { 
     iniciarOperacion(); 
     //tr.setTimeout(2); 
     sesion.saveOrUpdate(datos_laborales); 
     tx.commit(); 
     resp = true; 
    } catch (HibernateException he) { 
     tx.rollback(); 
     he.printStackTrace(); 
     resp = false; 
     throw he; 
    } finally { 
     if (sesion.isOpen()) { 
      sesion.close(); 
     } 
    } 
    return resp; 
} 

public boolean EliminarDatos(Datos_Laborales datos_laborales) throws HibernateException { 

    boolean resp = false; 
    try { 
     iniciarOperacion(); 
     //tr.setTimeout(2); 
     sesion.delete(datos_laborales); 
     tx.commit(); 
     resp = true; 
    } catch (HibernateException he) { 
     tx.rollback(); 
     he.printStackTrace(); 
     resp = false; 
     throw he; 
    } finally { 
     if (sesion.isOpen()) { 
      sesion.close(); 
     } 
    } 
    return resp; 
} 
public List<Datos_Laborales> listadoDatos_Laborales() { 

    List<Datos_Laborales> lista = null; 
    try { 
     this.iniciarOperacion(); 
     lista = sesion.createCriteria(Datos_Laborales.class).addOrder(Order.asc("iddatos_laborales")).list(); 
    } catch (HibernateException he) { 
     throw he; 
    } finally { 
     if (sesion.isOpen()) { 
      sesion.close(); 
     } 
    } 
    return lista; 
} 

public void iniciarOperacion() throws HibernateException { 

    sesion = HibernateUtil.getSessionFactory().getCurrentSession(); 
    tx = sesion.beginTransaction(); 
} 

public void manejaException(HibernateException he) throws HibernateException { 

    tx.rollback(); 
    throw new HibernateException("Ocurrio un error en la capa de acceso a datos. ", he); 
} 
} 

в Datos_Laborales. hbm.xm л

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
<class name="entidades.Rh.Datos_Laborales" table="rh.datos_laborales"> 
    <id column="iddatos_laborales" name="iddatos_laborales"> 
    </id> 
    <property name="idempleado"/> 
    <property name="telefono"/> 
    <property name="ext"/> 
    <property name="flota"/> 
    <property name="nss"/> 
    <property name="salario_mensual"/> 
    <property name="salario_quincenal"/> 
    <property name="salario_diario"/> 
    <property name="salario_hora"/> 
    <property name="fecha_contratacion"/> 
    <property name="fecha_inicio"/> 
    <property name="fecha_terminacion"/>  
    <many-to-one cascade="save-update" class="entidades.Rh.Posicion" column="idposicion" fetch="select" name="posicion">   
    </many-to-one> 
    <many-to-one cascade="save-update" class="entidades.Rh.Contratacion" column="idcontratacion" fetch="select" name="contratacion">   
    </many-to-one> 
    <many-to-one cascade="save-update" class="entidades.Rh.Nivel_Academico" column="idnivel_academico" fetch="select" name="nivel_academico">   
    </many-to-one> 
    <many-to-one cascade="save-update" class="entidades.Rh.Sucursal" column="idsucursal" fetch="select" name="sucursal">   
    </many-to-one> 
</class> 
</hibernate-mapping> 

кнопку Сохранить

public void iniciarOperacion() throws HibernateException { 

    sesion = HibernateUtil.getSessionFactory().openSession(); 
    tx = sesion.beginTransaction(); 
} 
    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {           
    this.iniciarOperacion(); 
    List<Empleados> lst; 

    //Captura maxID del empleado 
    long maxid = (long) sesion.createCriteria(Empleados.class) 
      .setProjection(Projections.max("idempleado")).uniqueResult(); 

    ed = new EmpleadosDAO(); 
    dpd = new Datos_PersonalesDAO(); 
    dpgd = new Datos_PagoDAO(); 
    dld = new Datos_LaboralesDAO(); 
    listaempleados = new ArrayList<>(); 
    listadatos_personales = new ArrayList<>(); 
    listadatos_pago = new ArrayList<>(); 
    listadatos_laborales = new ArrayList<>(); 

    //Capturar datos principales 
    String empleado = txtEmpleado.getText(); 
    String cedula = txtCedula.getText(); 
    Estados estado = (Estados) cbxEstados.getSelectedItem(); 

    //Capturar datos personales 
    String nombre_empleado = txtNombreEmpleado.getText(); 
    String apellido_empleado = txtApellidos.getText(); 
    Sexo sexo = (Sexo) cbxSexo.getSelectedItem(); 
    Estado_Civil estado_civil = (Estado_Civil) cbxEstado_Civil.getSelectedItem(); 
    Sector sector = (Sector) cbxSector.getSelectedItem(); 
    String direccion = txtDireccion.getText(); 
    String telefono_empleado = txtTelefono.getText(); 
    String celular_empleado = txtCelular.getText(); 
    String lugar_nacimiento = txtLugarNacimiento.getText(); 
    String email = txtEmail.getText(); 
    Date fecha_nacimiento = dcFecha_Nacimiento.getDate(); 
    byte[] foto = new byte[(int) this.longitudBytes]; 

    //Capturar datos de pago 
    Forma_Pago forma_pago = (Forma_Pago) cbxForma_Pago.getSelectedItem(); 
    Cuentas_Bancarias cuenta_bancaria = (Cuentas_Bancarias) cbxCuenta_Bancaria.getSelectedItem(); 
    String cuentabancariaEmpleado = txtCuenta_BancariaEmpleado.getText(); 

    //Capturar datos laborales 
    Posicion posicion = (Posicion) cbxPosicion.getSelectedItem(); 
    Sucursal sucursal = (Sucursal) cbxSucursal.getSelectedItem(); 
    Nivel_Academico nivel_academico = (Nivel_Academico) cbxNivel_Academico.getSelectedItem(); 
    Contratacion contratacion = (Contratacion) cbxContratacion.getSelectedItem(); 
    Date fecha_contratacion = dcFecha_Contratacion.getDate(); 
    Date fecha_inicio = dcFecha_Inicio.getDate(); 
    Date fecha_terminacion = dcFecha_Terminacion.getDate(); 
    String telefono_oficina = txtTelefono_Oficina.getText(); 
    String extension = txtExtension.getText(); 
    String flota = txtFlota.getText(); 
    String sueldo_mensual = txtSalario_Mensual.getText(); 
    String salario_mensual = sueldo_mensual.replace(",", ""); 
    String sueldo_quincenal = txtSalario_Quincenal.getText(); 
    String salario_quincenal = sueldo_quincenal.replace(",", ""); 
    String sueldo_diario = txtSalario_Diario.getText(); 
    String salario_diario = sueldo_diario.replace(",", ""); 
    String sueldo_hora = txtSalario_Hora.getText(); 
    String salario_hora = sueldo_hora.replace(",", ""); 
    String nss = txtNSS.getText(); 

    lst = sesion.createCriteria(Empleados.class) 
      .add(Restrictions.eq("cedula", cedula)) 
      .list(); 

    if (!(lst.isEmpty())) { 
     JOptionPane.showMessageDialog(this, "Existe un empleado con el numero de cedula"); 
    } else { 
     if (empleado.trim().equals("")) { 
      JOptionPane.showMessageDialog(this, "Ingrese el nombre del empleado"); 
     } else { 
      if (estado != null) { 
       long id = ((maxid) + 1); 
       Empleados empleados = new Empleados(); 
       empleados.setIdempleado(id); 
       empleados.setEstados(estado); 
       empleados.setEmpleado(empleado); 
       empleados.setCedula(cedula); 
       if (nombre_empleado.trim().equals("")) { 
        JOptionPane.showMessageDialog(this, "Ingrese Nombres del empleado"); 
       } else { 
        if ((apellido_empleado.trim().equals(""))) { 
         JOptionPane.showMessageDialog(this, "Ingrese Apellidos del empleado"); 
        } else { 
         if (ed.AgregarDatos(empleados) == true) { 
          listaempleados.add(empleados); 
          //tblSectores.removeAll(); 
         } 
         //Setea Valores Datos_Personales 
         Datos_Personales datos_empleados = new Datos_Personales(); 
         datos_empleados.setIddatos_personales(id); 
         datos_empleados.setIdempleado(id); 
         datos_empleados.setNombres(nombre_empleado); 
         datos_empleados.setApellidos(apellido_empleado); 
         datos_empleados.setSexo(sexo); 
         datos_empleados.setEstado_civil(estado_civil); 
         datos_empleados.setSector(sector); 
         datos_empleados.setDireccion(direccion); 
         datos_empleados.setTelefono(telefono_empleado); 
         datos_empleados.setCelular(celular_empleado); 
         datos_empleados.setLugar_nacimiento(lugar_nacimiento); 
         datos_empleados.setCorreo_electronico(email); 
         datos_empleados.setFecha_nacimiento(fecha_nacimiento); 
         datos_empleados.setFoto(foto); 

         if (dpd.AgregarDatos(datos_empleados) == true) { 
          listadatos_personales.add(datos_empleados); 
          //tblSectores.removeAll(); 
         } 
         //Setea Valores Datos_Pago 
         Datos_Pago datos_pago = new Datos_Pago(); 
         datos_pago.setIddatos_pago(id); 
         datos_pago.setIdempleado(id); 
         datos_pago.setForma_pago(forma_pago); 
         datos_pago.setCuenta_bancaria(cuenta_bancaria); 
         datos_pago.setCuentabancaria_empleado(cuentabancariaEmpleado); 

         if (dpgd.AgregarDatos(datos_pago) == true) { 
          listadatos_pago.add(datos_pago); 
          //tblSectores.removeAll(); 
         } 
         //Setea Valores Datos_Laborales 
         Datos_Laborales datos_laborales = new Datos_Laborales(); 
         datos_laborales.setIddatos_laborales(id); 
         datos_laborales.setIdempleado(id); 
         datos_laborales.setPosicion(posicion); 
         datos_laborales.setSucursal(sucursal); 
         datos_laborales.setNivel_academico(nivel_academico); 
         datos_laborales.setContratacion(contratacion); 
         datos_laborales.setFlota(flota); 
         datos_laborales.setTelefono(telefono_oficina); 
         datos_laborales.setExt(extension); 
         datos_laborales.setNss(nss); 
         datos_laborales.setSalario_mensual(Double.parseDouble(salario_mensual)); 
         datos_laborales.setSalario_quincenal(Double.parseDouble(salario_quincenal)); 
         datos_laborales.setSalario_diario(Double.parseDouble(salario_diario)); 
         datos_laborales.setSalario_hora(Double.parseDouble(salario_hora)); 
         datos_laborales.setFecha_contratacion(fecha_contratacion); 
         datos_laborales.setFecha_inicio(fecha_inicio); 
         datos_laborales.setFecha_terminacion(fecha_terminacion); 
         if (dld.AgregarDatos(datos_laborales) == true) { 
          listadatos_laborales.add(datos_laborales); 
          //tblSectores.removeAll(); 
         } 

        } 
       } 

      } 
     } 

     } 
    } 
    } 

ответ

0

Проблема заключается в том, что вы открываете в btnGuardarActionPerformed() в Session по телефону this.iniciarOperacion() и, возможно, открыть другой Session в ed.AgregarDatos(empleados). Конечно, вы не можете работать с двумя сеансами.

Вы можете использовать getCurrentSession(). Он возвращает сеанс, ограниченный текущим потоком (или транзакцией, зависит от настроек гибернации).

Но лучшим решением является использование Spring. Весна будет контролировать сеанс и транзакции.

+0

это не работает – j3v1t0

+0

@ j3v1t0 Пожалуйста, предоставьте трассировку стека. –

0

я изменить для этого

package hibernate.mapeo.dao.rh; 

import entidades.Rh.Datos_Laborales; 
import hibernate.mapeo.HibernateUtil; 
import java.util.List; 
import org.hibernate.HibernateException; 
import org.hibernate.Session; 
import org.hibernate.Transaction; 
import org.hibernate.criterion.Order; 


public class Datos_LaboralesDAO { 


private Session sesion; 
private Transaction tx; 

public boolean AgregarDatos(Datos_Laborales datos_laborales) throws HibernateException{ 

    boolean resp = false; 
    try { 
     iniciarOperacion(); 
     //tr.setTimeout(2); 
     sesion.save(datos_laborales); 
     tx.commit(); 
     resp = true; 
    } catch (HibernateException he) { 
     tx.rollback(); 
     he.printStackTrace(); 
     resp = false; 
     throw he; 
    } finally { 
     if (sesion.isOpen()) { 
      sesion.close(); 
     } 
    } 
    return resp; 
} 

public boolean ActualizarDatos(Datos_Laborales datos_laborales) throws HibernateException{ 

    boolean resp = false; 
    try { 
     iniciarOperacion(); 
     //tr.setTimeout(2); 
     sesion.saveOrUpdate(datos_laborales); 
     tx.commit(); 
     resp = true; 
    } catch (HibernateException he) { 
     tx.rollback(); 
     he.printStackTrace(); 
     resp = false; 
     throw he; 
    } finally { 
     if (sesion.isOpen()) { 
      sesion.close(); 
     } 
    } 
    return resp; 
} 

public boolean EliminarDatos(Datos_Laborales datos_laborales) throws HibernateException { 

    boolean resp = false; 
    try { 
     iniciarOperacion(); 
     //tr.setTimeout(2); 
     sesion.delete(datos_laborales); 
     tx.commit(); 
     resp = true; 
    } catch (HibernateException he) { 
     tx.rollback(); 
     he.printStackTrace(); 
     resp = false; 
     throw he; 
    } finally { 
     if (sesion.isOpen()) { 
      sesion.close(); 
     } 
    } 
    return resp; 
} 
public List<Datos_Laborales> listadoDatos_Laborales() { 

    List<Datos_Laborales> lista = null; 
    try { 
     this.iniciarOperacion(); 
     lista = sesion.createCriteria(Datos_Laborales.class).addOrder(Order.asc("iddatos_laborales")).list(); 
    } catch (HibernateException he) { 
     throw he; 
    } finally { 
     if (sesion.isOpen()) { 
      sesion.close(); 
     } 
    } 
    return lista; 
} 

public void iniciarOperacion() throws HibernateException { 

    sesion = HibernateUtil.getSessionFactory().getCurrentSession(); 
    tx = sesion.beginTransaction(); 
} 

public void manejaException(HibernateException he) throws HibernateException { 

    tx.rollback(); 
    throw new HibernateException("Ocurrio un error en la capa de acceso a datos. ", he); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^