transactions-Transaction Session 问题求助!

问题描述

Transaction Session 问题求助!
HibernateUtil.java
*

  • @author Tyler
    */
    public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
    try {
    // Create the SessionFactory from standard (hibernate.cfg.xml)
    // config file.
    Configuration configuration = new Configuration().configure();

    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()

    .applySettings(configuration.getProperties()).build();

    sessionFactory = configuration

    .buildSessionFactory(serviceRegistry);

    // return sessionFactory;
    } catch (Throwable ex) {
    // Log the exception.
    System.err.println(""Initial SessionFactory creation failed."" + ex);
    throw new ExceptionInInitializerError(ex);
    }
    }

    public static SessionFactory getSessionFactory() {
    return sessionFactory;
    }

    }

    //查询
    private List criteriaIUL_get(String key) {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    // Query q = session.createQuery(UI_BaseOnEquipmentId);
    Criteria criteria = session.createCriteria(InfosysUserInfo.class);
    Criterion criterion;
    switch (key.length()) {
    case 5:
    criterion = Restrictions.eq(""equipmentId"" key);
    break;
    case 11:
    criterion = Restrictions.or(Restrictions.eq(""phone1"" key) Restrictions.eq(""phone2"" key));
    break;
    default:
    criterion = null;
    break;
    }
    if (criterion == null) {
    return null;
    }
    criteria.add(criterion);
    List resultList = criteria.list();
    session.getTransaction().commit();
    return resultList;
    }
    -------------------------------------
    hibernate.cfg.xml

thread
第一次事务没有问题,第二次查询时出现:(这是什么问题)
Exception in thread ""AWT-EventQueue-0"" org.hibernate.TransactionException: nested transactions not supported
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:154)
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1435)
at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356)
at com.sun.proxy.$Proxy0.beginTransaction(Unknown Source)
at frame.JFrameMain.criteriaIUL_get(JFrameMain.java:51)
at frame.JFrameMain.jBqueryUserMouseClicked(JFrameMain.java:617)
at frame.JFrameMain.access$12(JFrameMain.java:615)
at frame.JFrameMain$13.mouseClicked(JFrameMain.java:507)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

解决方案

这是没有关闭的原因嘛?

解决方案二:
getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭
你是不是代码异常了, 没有commit? 比如 criterion 为空你直接返回了?

解决方案三:
http://zhidao.baidu.com/link?url=KNGwETB5nm1-qRwtaN81SRU0131FHrTOVXV5x2ymvjFBe_KCC4D82Chlpgol1L9BE6i2wnl6rVl6ccRUoz7O2a

时间: 2016-03-11
Tags: transactions

transactions-Transaction Session 问题求助!的相关文章

【会话】Oracle kill session系列

[会话]Oracle kill session系列   1.1  BLOG文档结构图 Oracle kill session相关问题 - 3 - 1.1 BLOG文档结构图 - 4 - 1.2 前言部分 - 5 - 1.2.1 导读和注意事项 - 5 - 1.2.2 相关参考文章链接 - 6 - 1.2.3 本文简介 - 7 - 1.3 相关知识点扫盲(摘自网络+个人总结) - 7 - 1.3.1 得到当前会话的几个SQL - 7 - 1.3.2 Session 状态说明 - 8 - 1.3.3

Hibernate学习(二)Hibernate中Session之get和load方法的真正区别

最近在学习SHH框架中的Hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入很大.主要是对get方法的说法跟实际运行的结果不一致. 先说一下观点吧: get不支持lazy,load支持lazy: 数据不存在时,get返回null,load则抛出ObjectNotFoundException异常. load方法可以返回实体的代理类实例,而get方法直接读取数据库,所以直接返回

谈谈分布式事务之三 System.Transactions事务详解[上篇]

在.NET 1.x中,我们基本是通过ADO.NET实现对不同数据库访问的事务..NET 2.0为了带来了全新的 事务编程模式,由于所有事务组件或者类型均定义在System.Transactions程序集中的 System.Transactions命名空间下,我们直接称基于此的事务为System.Transactions事务. System.Transactions事务编程模型使我们可以显式(通过System.Transactions.Transaction)或者隐 式(基于System.Tran

谈谈分布式事务(Distributed Transaction)[共5篇]

[第1篇] SOA需要怎样的事务控制方式 在一个基于SOA架构的分布式系统体系中,服务(Service)成为了基本的功能提供单元,无论与业务流程无关的基础功能,还是具体的业务逻辑,均实现在相应的服务之中.服务对外提供统一的接口,服务之间采用标准的通信方式进行交互,各个单一的服务精又有效的组合.编排成为一个有机的整体.在这样一个分布式系统中某个活动(Activity)的实现往往需要跨越单个服务的边界,如何协调多个服务之间的关系使之为活动功能的实现服务,涉及到SOA一个重要的课题:服务协作(Serv

Hibernate中的session的save方法。

问题描述 Hibernate中的session的save方法. 我正在学习hibernate框架,然后在做一个插入的时候遇到了一个问题.通过跟踪我发现在执行session.save(obj);方法时,程序就不动了.并且在获取session时还打印出下面红色的信息. 请问一个是什么原因以及怎么解决呢? public int insertClient(Client client) { // TODO Auto-generated method stub //HibernateUtil.closeSe

Hibernate Session和Jpa EntityManager

本文主要比较一下二者操作实体类的方法的关系和区别. 本文适用 Hibernate:4.3.11.Final 和 spring-data-jpa:1.10.4.RELEASE . 创建方式 Session: Configuration configuration=new Configuration().configuration(); ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(configu

一口一口吃掉Hibernate(二)——别被世俗蒙蔽了双眼:Hibernate中Session之get和load方法的真正区别

      最近在学习SHH框架中的Hibernate,对Session的get和load方法,有点混不清楚,不知道区别在哪,或者对它们的区别感触不深.所以百度了一下,结果问题来了.百度的结果和实际测试的结果出入很大.主要是对get方法的说法跟实际运行的结果不一致.       先说一下观点吧: get不支持lazy,load支持lazy: 数据不存在时,get返回null,load则抛出ObjectNotFoundException异常. load方法可以返回实体的代理类实例,而get方法直接

Hibernate框架学习之一:Hello World程序

前言 对一个框架的直观认识,往往是从一个Hello World程序开始.Hibernate是一个ORM(Object Relationship Mapping)对象映射框架.实现了JDBC轻量级的封装,使得在进行JDBC开发的时候可以直接使用面向对象的思维进行开发,说白了Hibernate框架的作用是在Java对象与关系数据库中做了一个映射,使得程序员不用再使用各种SQL了.所以总结Hibernate以下几点: 1.完成了对JDBC的封装,不用再与各种Connection打交道了 2.在业务体系

MYSQL innodb中的只读事物以及事物id的分配方式

原创水平有限,如果有误请指出 一.只读事物 也许有人要问一个select算不算一个事物.其实在innodb中一个innodb的select是一个事物,他有trx_t结构体,并且放到了mysql_trx_list链表中,关于 innodb事物系统一级的事都做了,但是这种事物叫做只读事物 bool read_only; /*!< true if transaction is flagged as a READ-ONLY transaction. if auto_commit && wil