@Component public class LookCacheData { public static LookRecordService lookRecordServiceNo; public static PhoneBookService phoneBookServiceNo; public static UserService userServiceNo; public ThreadLook threadLook = new ThreadLook(); //所有登录用户 public static LinkedHashMap<String, CopyOnWriteArrayList<LookObject>> loginUserMap = new LinkedHashMap<>(); public LookCacheData() { threadLook.start(); System.out.println("~~~~~~~~~~~~~~~~LookCacheData~~~~~~~~~启动线程~~~~~~~~~"); } static class ThreadLook extends Thread { // 线程主处理函数,用于定期从数据库中读取Pk对放入队列中 @Transactional public void run() { while (true){ while (loginUserMap != null && loginUserMap.size() > 0) { for (String loginUid : loginUserMap.keySet()) { CopyOnWriteArrayList<LookObject> lookedList = (CopyOnWriteArrayList<LookObject>) loginUserMap.get(loginUid); if (StringUtils.isBlank(loginUid)) { continue; } User loginUser = userServiceNo.findByUid(loginUid);//该行进行查询 。。。。。。
每次通过controller进行的查询,是完全正常的,可是该线程中的查询,总是出现以下错误提示:
Exception in thread "Thread-14" org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134) at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:993) at com.haokan.tools.base.BaseDao.getSession(BaseDao.java:61) at com.haokan.tools.base.BaseDao.queryByUniqueColumn(BaseDao.java:794) at com.haokan.modules.service.UserService.findByUid(UserService.java:74) at com.haokan.tools.bean.LookCacheData$ThreadLook.run(LookCacheData.java:55)
hibernate的配置如下:
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
网上都说,将HibernateSession绑定到Thread,只需要将current_session_context_class配置好就好了,可是,我这始终会出现异常:不能获取当前线程的同步session;
无论是在LookCacheData中还是在ThreadLook中添加以下绑定注解,service对象都是null,
@Autowired public LookRecordService lookRecordService; @Autowired public PhoneBookService phoneBookService; @Autowired public UserService userService;
所以,上面的
User loginUser = userServiceNo.findByUid(loginUid);
中的userServiceNo是我在用户登录的时候的userService的值,如果能够让上面3个绑定注解在我的线程运行中的时候不是null,就万事大吉了,可是他们3个一直为空;如果用其他controller中的userService的值,又会出现session不同步的问题,这个问题要怎么解决啊?
相关推荐
No Hibernate Session bound to thread,没有绑定线程解决办法,找了好久才找到的
问题描述 用SpringBoot + Spring Data JPA操作数据库 项目启动的时候 报了一个错 SpringBoot的版本是2.2.6.RELEASE org.springframework.beans.factory.BeanCreationException: Error creating bean with name '...
Caused by: org.hibernate.HibernateException: Could not instantiate connection provider [org.hibernate.connection.C3P0ConnectionProvider] at org.hibernate.engine.jdbc.connections.internal....
2、报错:org.hibernate.HibernateException: No Session found for current thread 意思是必须在transcation.isActive()条件下才能执行, 可以解决办法是:当方法不需要事务支持的时候,使用 Session ...
由于项目需求的需要,我们引入了连接池。数据库连接池的最大好处是节省开销。我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0或Proxool连接池,在我们...
51. <tx:annotation-driven transaction-manager="transactionManager" /> 52. <tx:annotation-driven mode="aspectj"/> 53. 54. <aop:aspectj-autoproxy/> 55.</beans> hibernate.properties数据库连接...
Hibernate3技术精辟详解 Hibernate3 Hibernate3详解,看过就知道Hibernate3怎么配置和应用
1.Caused by: org.hibernate.HibernateException: Connection cannot be null when ‘hibernate.dialect’ not set 报错就配置吧 启动项目不报错了,但是访问项目报错了 2.访问报错...
Transaction tran=session.beginTransaction(); String hql="from User"; Query query=session.createQuery(hql); List list=query.list(); tran.commit(); session.close(); return list; } ...
import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current ...
public List<News> doInHibernate(Session session) throws HibernateException,SQLException { List<News> list = null; Query query = session.createQuery("from News order by id desc"); query....
public void executeTransactionBySQL() throws HibernateException { TestJTAByOracleVo vo1=new TestJTAByOracleVo(); vo1.setName("3333333"); HibernateByOracleDAO.addByOracle(vo1); ...
public void deleteUsers(Users users) throws HibernateException { Session session = HibSessionFactory.currentSession(); Transaction tx = session.beginTransaction(); session.delete(users); tx....
例如: 代码如下:HibernateTest.java ... public class HibernateTest { public static void main(String[] args) throws HibernateException { SessionFactory sessionFactory = new Configuration().configure().bui
hibernate详细解析.pdf文档,所有的都有。。
6.8 HibernateException,Checked 6.9 Template/Callback 简化业务方法 6.10 版面:一棵自身循环的树 6.11 版面与帖子:Master/Detail 主从关系 6.12 帖子树及其分页 6.13 与Web层交互 6.14 帖子的多形扩展:...
6.8 HibernateException,Checked 6.9 Template/Callback 简化业务方法 6.10 版面:一棵自身循环的树 6.11 版面与帖子:Master/Detail 主从关系 6.12 帖子树及其分页 6.13 与Web层交互 6.14 帖子的多形扩展:...