【问题标题】:Getting class org.hibernate.TransactionException : nested transactions not supported获取类 org.hibernate.TransactionException:不支持嵌套事务
【发布时间】:2014-12-24 22:56:52
【问题描述】:

我正在尝试通过休眠从数据库中检索数据。但是当我刷新我的jsp页面时,我得到了“org.hibernate.TransactionException:不支持嵌套事务”异常。有时我能够得到结果,但有时我会超越异常。我在代码中只使用了一次 beginTransaction() 方法。但仍然得到异常。根本原因可能是什么。

 My code is :
            StringBuilder sb  = new StringBuilder();
            sb.append("{").append(STATUS).append(OK).append(", ").append(RESULTS);
            sb.append("[");

            if(session == null){
                return getErrorMsgJson("Failed to get DB Session");
            }

            try {
            session.beginTransaction();

            ListIterator iterator3 = session.createSQLQuery(sqlStr).list().listIterator();

            int t=0;
            while(iterator3.hasNext()){

                Object obj;
                Object obj3[]=null;
                if((obj=iterator3.next()) instanceof BigInteger){

                    sb.append("\"");
                    sb.append(obj.toString());
                    sb.append("\"");
                    break;

                }
                else{
                    obj3 = (Object[])iterator3.previous();

                    for(int i=0;i<obj3.length;i++){
                        sb.append("\"");
                        sb.append(obj3[i].toString());
                        sb.append("\"");
                        if(t<obj3.length){
                        sb.append(",");
                        }

                    }

                }
                iterator3.next();
                t++; 

            }
            //session.getTransaction().commit();
            sb.append("] }");
            return sb.toString();

        }
        catch (Exception e) {
            //Log.logErr(Logc.JS, Logc.JS_INTERNAL_ERR, "Exception while getting DB Connection");
            //out.println("Exception while getting DB Connection");
            //return getErrorMsgJson(e.getClass().getName()+" :  "+e.getMessage());

            //return getErrorMsgJson(e.getClass()+"  "+e.getMessage());
            //e.printStackTrace();
            return getErrorMsgJson(e.getClass()+" : "+e.getMessage());
        } 

提前致谢。

【问题讨论】:

标签: database hibernate jsp exception transactions


【解决方案1】:

您没有关闭会话,因此使用了许多不受支持的事务。

您可以在其中最终阻止和关闭会话。

try{

//your code


}catch(Exception e){

}finally{

session.close();

}

更新 在您的事务异常得到解决之后。 你得到了 GenericJDBCException。在这里您创建 SQLQuery,但您需要指定该表所代表的实体。

SQLQuery query = session.createSQLQuery(sql);
         query.addEntity(Employee.class);
Iterator itr = query.list().listIterator();

【讨论】:

  • 感谢 Shoaib,即使现在我也遇到了同样的异常,并且在 ListIterator iterator3 = session.createSQLQuery(sqlStr).list 处也得到了“class org.hibernate.exception.GenericJDBCException : could not extract ResultSet” ().listIterator();"
  • 请发布你的查询字符串和堆栈跟踪
  • 查询是:select * from table_name,这个表名可以是postgress db中任何有效的现有表名。 org.apache.jasper.JasperException: 在第 80 行处理 JSP 页面 /ATSystemEntry.jsp 时发生异常 77: 78: //ListIterator iterator3 = session.createSQLQuery(sqlStr).list().listIterator(); 79: 80: 列表列表 = session.createSQLQuery(sqlStr).list(); 81: 尝试 { 82: ListIterator iterator3 = list.listIterator();
  • org.hibernate.exception.GenericJDBCException:无法提取结果集 org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54) org.hibernate.engine.jdbc.spi.SqlExceptionHelper。 convert(SqlExceptionHelper.java:126) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:91) org. hibernate.loader.Loader.getResultSet(Loader.java:2065)
  • org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1838) org.hibernate.loader.Loader.doQuery( Loader.java:909) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:354) org.hibernate.loader.Loader.doList(Loader.java:2553) org.hibernate.loader.Loader.doList(Loader. java:2539) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2369) org.hibernate.loader.Loader.list(Loader.java:2364)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2013-05-10
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多