如何在不使用 JPA 的情况下保持在 SpringBoot/GraphQL 中打开的 Hibernate 事务?
Posted
技术标签:
【中文标题】如何在不使用 JPA 的情况下保持在 SpringBoot/GraphQL 中打开的 Hibernate 事务?【英文标题】:How do I keep Hibernate transaction opened in SpringBoot/GraphQL without using JPA? 【发布时间】:2019-12-29 18:34:23 【问题描述】:我正在使用 GraphQL 来重建我的 REST 应用程序。 我遇到的问题之一是 GraphQLResolver 没有重用 GraphQLQueryResolver 中使用的事务。
我知道使用 JPA 和 OpenEntityManagerInViewFilter 会有所帮助,但现在还不能使用 JPA/EntityManager 重写数千个 DAO 来替换 Hibernate Session。
是否有替代方法可以使用“org.springframework.orm.hibernate5.LocalSessionFactoryBean”并仍然为 GraphQLResolver 保持事务打开?
@Component
@Transactional
public class CountryQuery implements GraphQLQueryResolver
public List<Country> countries()
...
@Component
@Transactional
public class CountryResolver implements GraphQLResolver<Country>
public List<Locale> locales(Country country)
...
【问题讨论】:
【参考方案1】:我发现 AsyncTransactionalExecutionStrategy 在这篇文章中有效
LazyInitializationException with graphql-spring
【讨论】:
以上是关于如何在不使用 JPA 的情况下保持在 SpringBoot/GraphQL 中打开的 Hibernate 事务?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不依赖数据库的情况下使用 Hibernate 5 (JPA) 启动 Spring Boot Application 2?
是否可以在不使用 Spring Boot JPA 的情况下测试基于 java 的 CRUD?