Hibernate执行CRUD操作时遇LogicalConnectionManagedImpl已关闭错误求助
解决Hibernate报错:LogicalConnectionManagedImpl is closed
问题根源
报错出现在saveProduct方法的catch块执行transaction.rollback()时,原因是你使用了try-with-resources管理Session,当try块抛出异常后,Session会被自动关闭,此时事务关联的JDBC连接已经关闭,再执行回滚操作就会触发连接已关闭的错误。另外,当前报错只是回滚时的次生错误,原始异常被掩盖了,需要先排查try块中抛出异常的根本原因。
解决方案
1. 手动管理Session生命周期
替换try-with-resources为手动打开/关闭Session,确保回滚操作在Session关闭前执行:
修改ProductDao的两个方法:
package com.hibernate.dao; import com.hibernate.model.Product; import com.hibernate.util.*; import org.hibernate.Session; import org.hibernate.Transaction; public class ProductDao { // 保存产品 public void saveProduct(Product product) { Transaction transaction = null; Session session = null; try { session = HibernateUtil.getSessionFactory().openSession(); transaction = session.beginTransaction(); session.save(product); System.out.println("Product saved successfully"); transaction.commit(); } catch(Exception e) { if(transaction != null && transaction.getStatus().canRollback()) { transaction.rollback(); } // 打印原始异常,排查根本问题 e.printStackTrace(); } finally { // 确保Session关闭 if(session != null && session.isOpen()) { session.close(); } } } // 根据ID查询产品 public Product getProductById(long id) { Transaction transaction = null; Product product = null; Session session = null; try { session = HibernateUtil.getSessionFactory().openSession(); transaction = session.beginTransaction(); product = session.get(Product.class, id); transaction.commit(); } catch(Exception e) { if(transaction != null && transaction.getStatus().canRollback()) { transaction.rollback(); } e.printStackTrace(); } finally { if(session != null && session.isOpen()) { session.close(); } } return product; } }
2. 排查原始异常
运行修改后的代码,控制台会打印try块中抛出的原始异常,常见原因包括:
Product类未添加@Entity、@Table注解- 主键字段未添加
@Id和@GeneratedValue注解(例如@Id @GeneratedValue(strategy = GenerationType.IDENTITY)) - 数据库连接配置错误(如用户名、密码错误,MySQL服务未启动)
3. 调整Hibernate配置(可选)
你的hbm2ddl.auto设置为create-drop,程序结束后会自动删除数据库,导致后续查询可能失败。如果需要保留数据库,改为:
settings.put(Environment.HBM2DDL_AUTO, "update");
内容的提问来源于stack exchange,提问作者Abhinav
相关产品推荐
相关产品推荐

