`

怎么解决啊???"Thread-14" HibernateException: Could not obtain transaction-.....

 
阅读更多
@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不同步的问题,这个问题要怎么解决啊?

 

 

 

 

1
1
分享到:
评论

相关推荐

    org.hibernate.HibernateException: No Hibernate Session bound to thread

    Hibernate Session 绑定线程解决方案 在 Java web 开发中, Hibernate 是一个非常流行的 ORM(Object-Relational Mapping)框架,用于将 Java 对象映射到关系数据库中。然而,在使用 Hibernate 进行数据库操作时,...

    解决SpringDataJPA报错:org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null w

    问题描述 用SpringBoot + Spring Data JPA操作数据库 项目启动的时候 报了一个错 SpringBoot的版本是2.2.6.RELEASE org.springframework.beans.factory.BeanCreationException: Error creating bean with name '...

    spring_MVC源码

    51. &lt;tx:annotation-driven transaction-manager="transactionManager" /&gt; 52. &lt;tx:annotation-driven mode="aspectj"/&gt; 53. 54. &lt;aop:aspectj-autoproxy/&gt; 55.&lt;/beans&gt; hibernate.properties数据库连接...

    HIbernate4.3.6整合c3p0所需jar

    Caused by: org.hibernate.HibernateException: Could not instantiate connection provider [org.hibernate.connection.C3P0ConnectionProvider] at org.hibernate.engine.jdbc.connections.internal....

    com.microsoft.sqlserver.jdbc.SQLServerException: 只进结果集不支持请求的操作 解决方案

    } catch (HibernateException e) { if (tx != null) { tx.rollback(); } e.printStackTrace(); } ``` #### 2. 使用原生SQL查询 另一种方法是使用原生SQL查询,这样可以直接控制SQL语句的生成,包括使用LIMIT和...

    hibernate-release-5.4.25.Final_Hibernate5.4.25_hibernate所需jar包_源

    总之,Hibernate 5.4.25为Java开发者提供了强大的数据持久化解决方案,通过合理的jar包配置和应用,可以极大地提升开发效率,降低项目维护成本。在理解和掌握其核心特性的基础上,灵活运用到实际项目中,将有助于...

    Generating Artifacts问题解决.doc

    ENTRY org.eclipse.core.jobs 4 2 2010-12-27 14:20:11.625 !MESSAGE An internal error occurred during: "Generating Artifacts". !STACK 0 java.lang.IllegalArgumentException: Path must include project and ...

    Spring4.0+Hibernate4.0+Struts2.3整合案例

    2、报错:org.hibernate.HibernateException: No Session found for current thread 意思是必须在transcation.isActive()条件下才能执行, 可以解决办法是:当方法不需要事务支持的时候,使用 Session ...

    Hibernate配置常见错误

    错误表现:在初始化SessionFactory时,可能出现“org.hibernate.HibernateException: Could not instantiate dialect class”等异常,这通常是因为Hibernate配置文件中的dialect设置不正确或对应的JDBC驱动未引入。...

    hibernate数据关联

    } catch (HibernateException e) { if (tx != null) tx.rollback(); e.printStackTrace(); } finally { session.close(); } } } ``` #### 四、常见问题解答 **问题1**: 如果将`user.hbm.xml`中的`cascade`...

    Hibernate的三个准备和七个步骤

    } catch (HibernateException e) { // 处理异常 } ``` 5. **执行数据库操作:** - 使用`Session`实例提供的各种方法(如`save()`, `update()`, `delete()`, `load()`, `get()`等)来进行具体的数据库操作。...

    Hibernate+Proxool配置

    由于项目需求的需要,我们引入了连接池。数据库连接池的最大好处是节省开销。我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0或Proxool连接池,在我们...

    java错误大全(包括基本异常和开源框架出现的异常)

    - 插入集合行时失败,如`could not insert collection rows`,可能需要在映射文件中配置`inverse="true"`以解决关系维护问题。 9. **Struts框架异常:** - HTTP Status 404错误表明Servlet未配置正确,检查`web....

    hibernate常见错误解决方案

    **PropertyNotFoundException: Could not find a setter for property name in class hibernate.Hello_Bean** **异常描述:** 此异常表明Hibernate试图为实体类中的某个属性设置值时找不到对应的setter方法。 **...

    10_hibernate.rar

    Hibernate有一套自己的异常体系,如HibernateException、ConstraintViolationException等,帮助开发者定位和解决问题。 9. 高级特性 - 联合主键:多个字段共同组成主键。 - 继承映射:支持单表继承、多表继承等...

    hibernate测试时遇到的几个异常及解决方法汇总

    Hibernate测试时遇到的几个异常及解决方法汇总 在使用 Hibernate 进行测试时,可能会遇到一些异常,以下是其中的一些常见异常及其解决方法: 1. java.lang.NoSuchFieldError: INSTANCE 该异常的解决方法是删除 ...

    hibernate笔记

    Hibernate有一套自己的异常体系,如HibernateException、ConstraintViolationException等,它们继承自JDBC的SQLException,有助于在开发过程中定位问题。 总之,Hibernate通过其强大的ORM能力,使得Java开发者能...

Global site tag (gtag.js) - Google Analytics