如何获取 Hibernate/Spring Data 中 @Transactional 注释使用的当前会话?

Phi*_*rge 5 spring hibernate transactional spring-data-jpa

我一直在使用数据源中的 Callable 语句执行存储过程。现在,该过程必须从同一服务中 SP 执行之前执行的插入查询中读取数据。因此这会产生一个问题,因为整个服务都围绕着 @Transactional 注释,并且只有在服务完成后才会完成提交。那么,有没有办法获取当前@Transactional注解的当前会话。SessionFactory 的 getCurrentSession 给了我一个不同的会话。

ali*_*ani 1

如果您使用sessionfactory,您可以通过此代码获得

@Autowired
private SessionFactory sessionFactory;


public Session getSession() {
    try {
        return sessionFactory.getCurrentSession();
    } catch (Exception e) {
        System.out.println(e.getMessage().toString());
    }
    return sessionFactory.openSession();
}
Run Code Online (Sandbox Code Playgroud)

  • 对于每个偶然发现这一点的人:看起来注入在最新的 Spring 版本中不再起作用。 (4认同)