我正在使用Hibernate3.0,jdk 1.5和jboss-4.0.3,我需要在我的应用程序的某个地方使用Session.connection()进行直接SQL调用。
代码看起来像
String strSQL = "SELECT * FROM ORDER WHERE ORDER_ID = ?";
PreparedStatement pstmt = session.connection().prepareStatment(strSQL);
pstmt.setInt(1, Integer.parseInt(id));
ResultSet rs = pstmt.executeQuery();
while (rs.next())
{
//do work
}
rs.close();
pstmt.close();
session.flush();
session.connection().close();
但是在jmx-console上,InUseConnectionCount不断增加,直到达到
MAX-池大小。
任何人都知道为什么session.connection()。close()不起作用?
答案 0 :(得分:0)
如果您正在使用hibernate,则必须先创建一个实体管理器,然后才能执行查询。
EntityManagerFactory emf = Persistence.createEntityManagerFactory(" persistence_unit_name");
EntityManager em = emf.createEntityManager();
" persistence_unit_name"是persistence.xml文件中定义的持久性单元的名称。
执行查询的方式如下:
em.createQuery(" SELECT * FROM ORDER WHERE ORDER_ID =?")。setParameter(0,Integer.parseInt(id))。getResultList()