【发布时间】:2017-08-05 20:29:00
【问题描述】:
当我使用 Hibernate 在 Eclipse 中运行我正在执行的应用程序时,我遇到了这个问题。这里我向你展示stacktrace和主要的java类。
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Session/EntityManager is closed
at org.hibernate.internal.AbstractSharedSessionContract.checkOpen(AbstractSharedSessionContract.java:332)
at org.hibernate.engine.spi.SharedSessionContractImplementor.checkOpen(SharedSessionContractImplementor.java:126)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:647)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:102)
at vista.Principal$2.actionPerformed(Principal.java:124)
.
.
.
这里主类的部分有问题。
JList listaConsultas = new JList();
scroll.setViewportView(listaConsultas);
SessionFactory sesionfact1 = HibernateUtil.getSessionFactory();
Session sesion1 = sesionfact1.openSession();
Transaction tr = sesion1.beginTransaction();
JButton btnConsultar = new JButton("CONSULTAR");
btnConsultar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
Query queryAcogida = sesion1.createQuery("SELECT s FROM rah_histo_saip_acogida s WHERE fecharealiza BETWEEN :desde AND :hasta")
.setParameter("desde",fechaDesde)
.setParameter("hasta", fechaHasta);
List<RahHistoSaipAcogida> listaAcogida = queryAcogida.list();
queryAcogida.setFetchSize(10);
DefaultListModel dlm = new DefaultListModel();
dlm.addElement("----ACOGIDA DEL PACIENTE----");
for(RahHistoSaipAcogida acog: listaAcogida){
dlm.addElement(acog.toString());
listaConsultas.setModel(dlm);
}
}
});
tr.commit();
sesion1.close();
btnConsultar.setBounds(281, 113, 120, 23);
contentPane.add(btnConsultar);
【问题讨论】:
-
为什么会有交易?你在做什么?在
actionPerformed方法中打开和关闭会话
标签: java mysql hibernate session