当前位置: 首页 > 知识库问答 >
问题:

Spring未在未标记@Transactional的情况下给出当前会话

殳自怡
2023-03-14

使用Spring sessionFactory注入。

@SuppressWarnings("unchecked")
    public void getData() {
        System.out.println("%%%% Hibernate fetching data %%%% ");
        Session session = factory.getCurrentSession();
        /*
         * try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO
         * Auto-generated catch block e.printStackTrace(); }
         */
        List<Address> addresses = session.createQuery("from Address").list();
        System.out.println("Total Connectins = "
                + factory.getStatistics().getConnectCount());
        for (Address address : addresses) {
            System.out.println(address);
        }
    }

以上代码给出异常

org.hibernate.HibernateException: No Session found for current thread

但是当这个方法被标记为@Transactional时,它工作得很好。但是我不希望为此方法启用任何事务

我错过了什么吗…?

共有1个答案

祁均
2023-03-14

这就是事务的工作原理。通过标记该方法@Transactional,您要求TransactionManager使用来自SessionFactory的新事务会话创建并启动新事务。没有事务,Hibernate不会使用数据库创建会话。它创建Transaction的原因是,如果出现问题,Hibernate可以轻松回滚您在一个事务中所做的事情。

如果没有@Transactional,Hibernate 将假定您不需要与数据库进行交互。我建议在继续之前阅读Spring文档,因为您似乎对这项技术的工作原理感到非常困惑。通过了解正在发生的事情将大大提高你在写这些东西时的有效性。

 类似资料:
  • 问题内容: 我有一个使用spring和hibernate的java stuts2 Web应用程序。 我越来越。 SpringBean.xml hibernate.cfg.xml CustomerServiceImpl.java CustomerDaoImpl.java CustomerAction.java 我得到的例外 问题答案: 您在Spring配置中指定了一个事务管理器,但是没有关于何时或何

  • 我正在windows(7.3版)上安装gvim。启动后,我希望设置变量MYVIMRC,但它没有设置。有没有理由不设定。 有一个vimrc文件,因为许多设置与默认设置不同。 我用检查了MYVIMRC的值 gvim可执行文件位于c:\workarea\Vim\vim73中,c:\workare\Vim中的*\u vimrc*(在gvim启动时读取)。启动gvim后,我可以使用 对于版本:我发现系统vi

  • 我试图在一个演示的独立应用程序中使用Spring,使用DAO层和服务层来使用委托的Hibernate事务。 我已经正确地设置了配置,并且我已经对DAO方法上使用@Transactional注释进行了单元测试,测试结果表明它可以正常工作,但是当我将这个注释移动到服务层时,我得到了一个: 我提供了代码中最相关的部分,希望您能给我一个提示,让我了解这里发生了什么。 在GenericDaoHibernat

  • 当我使用request-url访问api时 它的工作很完美 但如果我将urlendpoint更改为某个无效endpoint,如 2019-12-28 19:16:47.601 DEBUG 5591---[nio-8080-exec-5]o.s.s.w.u.matcher.antPathRequestMatcher:检查请求的匹配:“/api/v1/hhh”;针对“/API/V1/Factuals”

  • 问题内容: 我有一个使用spring和hibernate的java stuts2 Web应用程序。 我越来越。 SpringBean.xml hibernate.cfg.xml CustomerServiceImpl.java CustomerDaoImpl.java CustomerAction.java 我得到的例外 问题答案: 您在Spring配置中指定了一个事务管理器,但是没有关于何时或何