问题与我之前提到的问题非常相似:
https://stackoverflow.com/questions/27549538/hibernate-spring-weblogic-and-transaction-management#comment43532319_27549538
Transaction Management using Hibernate with weblogic
使用Oracle数据库,weblogic应用服务器,在weblogic服务器中配置的数据源
在代码中创建SessionFactories而不是使用应用程序上下文和bean定义
@ m-deinum - 感谢你的投入,对不起 - 我知道你一直在质疑我为什么这样做,我应该看 multi tenant support - 我会 - 但叫我猪头 - 只想得到这个关闭:)
所以我得到了这个 - 虽然 - 不是一个干净的解决方案
请帮助我理解为什么它的工作原理以及为什么应该起作用的是抛出异常!
Hibernate.cfg.xml :(包含weblogic数据源)

<hibernate-configuration>
  <session-factory>
   <property name="connection.datasource">MYDS</property>
   <property name="show_sql">true</property>
   <property name="default_schema">CLIENT1SCHEMA</property>
   <property name="hibernate.current_session_context_class">thread</property>
 </session-factory>
</hibernate-configuration>

注 - 在'current_session_context_class'中使用'thread'

有效的代码:

public List<T> findAll(final HashMap param) {
  List<T> listData = null;
  Criteria subSelectCriteria =null;
  try {
   Session session=getSessionFactory().getCurrentSession();
   Transaction tx = session.beginTransaction();
   subSelectCriteria =session.createCriteria(getType());
  } catch (HibernateException e) {
    e.printStackTrace();
  }
  boolean isDistinctQuery=false;
  subSelectCriteria.setFirstResult(0);
  subSelectCriteria.setMaxResults(100);
  List inObjList = subSelectCriteria.list();
  if(!inObjList.isEmpty()){
    listData = inObjList;
  } 
  /** one of the below needs to be commented for this to work !!! - which makes no sense ? **/
  tx.commit();
  session.close();
  return listData;

}

如果我提交然后关闭会话我得到一个奇怪的错误:

org.hibernate.SessionException:Session已经关闭

现在 - 如果我注释掉tx.commit或session.close代码工作正常!
为什么?
这个可以吗 ?
谢谢@m-deinum - 肯定会开始探索Multitenant方法,我实际上花了一天时间 - 但我没有得到一个端到端的实现/示例我可以关注