栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有graphql-spring的LazyInitializationException

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有graphql-spring的LazyInitializationException

我解决了它,我应该更仔细地阅读graphql-java-
tools库的文档。除了,

GraphQLQueryResolver
它可以解决基本查询
GraphQLResolver<T>
,我的
Show
课程也需要一个,如下所示:

@Componentpublic class ShowResolver implements GraphQLResolver<Show> {    @Autowired    private CompetitionRepository competitionRepository;    public List<Competition> competitions(Show show) {        return ((List<Competition>)competitionRepository.findByShowId(show.getId()));    }}

这告诉库如何解析

Show
类中的复杂对象,并且仅在最初查询请求包含
Competition
对象时才使用。新年快乐!

编辑31.07.2019
:从那以后我就离开了下面的解决方案。长时间运行的事务很少是一个好主意,在这种情况下,一旦扩展应用程序,可能会导致问题。我们开始实现DataLoader以在异步事件中批处理查询。长时间运行的事务与DataLoader的异步性质相结合,可能导致死锁:https :
//github.com/graphql-java-kickstart/graphql-java-
tools/issues/58#issuecomment-398761715(针对以下内容,更多信息)。我不会删除下面的解决方案,因为对于较小的应用程序和/或不需要任何批处理查询的应用程序,它仍然可能是一个很好的起点,但是在执行此操作时请记住此注释。

编辑: 根据要求,这里是使用自定义执行策略的另一种解决方案。我正在使用

graphql-spring-boot-starter
graphql-java-tools

我首先定义一个GraphQL Config,如下所示:

@Configurationpublic class GraphQLConfig {    @Bean    public Map<String, ExecutionStrategy> executionStrategies() {        Map<String, ExecutionStrategy> executionStrategyMap = new HashMap<>();        executionStrategyMap.put("queryExecutionStrategy", new AsyncTransactionalExecutionStrategy());        return executionStrategyMap;    }}

其中

AsyncTransactionalExecutionStrategy
的定义如下:

@Servicepublic class AsyncTransactionalExecutionStrategy extends AsyncExecutionStrategy {    @Override    @Transactional    public CompletableFuture<ExecutionResult> execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException {        return super.execute(executionContext, parameters);    }}

这将整个查询执行置于同一事务中。我不知道这是否是最佳的解决方案,并且在错误处理方面也已经存在一些缺点,但是您不必以这种方式定义类型解析器。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号