但是数据库中对数据的操作都是使用getCurrentSession获取session的,而自己new的线程无此session.
最后看了下spring集成的代码,自己给动态set了一个session.
大概代码如下:
public class HasSessionThread extends Thread { public HasSessionThread(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } private SessionFactory sessionFactory; @Override public void run() throws Exception { // 为当前线程绑定一个session对象,让dao中使用 getCurrentSession的方法可以获取到对应的session Session session = this.sessionFactory.openSession(); TransactionSynchronizationManager.bindResource(this.sessionFactory, session); try { doSomething(); } finally { TransactionSynchronizationManager.unbindResourceIfPossible(this.sessionFactory); if (session != null) { session.close(); } } } }