java - Hibernate 异常:内部连接池已达到其最大大小
问题描述
每当我向 Id 字段添加“@GeneratedValue”注释时,我都会面临上述问题。请参阅下面的代码片段,我用于使用休眠保存实体。
public class HibernateTest {
public static void main(String[] args) {
Employee emp1 = new Employee();
emp1.setName("User1");
try (SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession()){
session.beginTransaction();
session.save(emp1);
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}
}
}
下面是我的实体类
@Entity
@Table (name = "Employee_Details")
public class Employee {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() {
return name;
}
public void setName(String name) { this.name = name; }
}
而在 hibernate.cfg.xml 中,连接池大小设置为 1
<property name="connection.pool_size">1</property>
我每次都关闭会话以及 sessionFactory 实例。在日志中仍然面临以下异常
org.hibernate.HibernateException: The internal connection pool has reached its maximum size and no connection is currently available!
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.poll(DriverManagerConnectionProviderImpl.java:322)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:189)
at org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:35)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcIsolationDelegate.delegateWork(JdbcIsolationDelegate.java:48)
at org.hibernate.id.enhanced.TableStructure$1.getNextValue(TableStructure.java:125)
at org.hibernate.id.enhanced.NoopOptimizer.generate(NoopOptimizer.java:40)
如果我从 Id 字段中删除“GeneratedValue”注释,这可以正常工作。谁能告诉我,为什么会失败?我该如何解决?
解决方案
我遇到了这个问题并通过替换解决了它:
@GeneratedValue(strategy = GenerationType.AUTO)
和:
@GeneratedValue(strategy = GenerationType.IDENTITY)
希望它也适合你!
推荐阅读
- github - 在 Github 上更改项目的遥控器
- react-native - React Native webview iOS禁用水平或垂直方向滚动
- google-apps-script - 需要帮助调试旨在更新 Google 云端硬盘中数百个文件的 Google Apps 脚本代码
- go - 其他 LAN 网络之间的 gRPC 客户端到客户端通信
- sql - SCCM 确定具有“在客户端缓存中保留内容”设置的应用程序包
- python - 使用插入排序进行快速排序
- react-native - 错误:在运行排毒测试时找不到模块“mocha/lib/cli/run-option-metadata”
- json - Octopus 在 appsetings.json 中部署变量替换
- retrofit - IllegalArgumentException 端口超出范围:改装拦截器中的 -1
- r - 如何在 R Shiny 中组织绘图