gpt4 book ai didi

java - JOOQ fetchLazy 进入 POJO

转载 作者:行者123 更新时间:2023-11-30 06:27:33 25 4
gpt4 key购买 nike

所以我想使用 DSLContext 懒惰地将一些记录获取到 POJO 中,如下所示:

public Iterator<Something> getSomething(DSLContext dsl) {
return dsl.selectDistinct(STUFF.FIELD)
.from(STUFF)
.fetchLazyInto(Something.class)
.iterator();
}

问题是没有这样的 fetchLazyInto() 并且我也不能做类似 fetchLazy().into(Something.class) 的事情

那么我该如何延迟获取 POJO 呢?我宁愿避免编写 RecordMapper

我当然可以执行以下操作,但感觉不对:

dsl.selectDistinct(STUFF.FIELD)
.from(STUFF)
.fetchLazy()
.stream()
.map(Something::new) //now Something constructor is ugly
.iterator();

谢谢!

最佳答案

这只能使用 jOOQ API 来完成,如下所示:

dsl.selectDistinct(STUFF.FIELD)
.from(STUFF)
.fetchLazy()
.stream()
.map(r -> r.into(Something.class))
.iterator();

但是,请注意,Iterator 不会扩展 AutoCloseable,因此,您可能有一个悬空资源(Cursor 的底层资源) JDBC ResultSet),它不会在您停止处理结果时就关闭。仅当您完成处理而没有错误,或者 ResultSet 被垃圾回收时,它才会关闭。

关于java - JOOQ fetchLazy 进入 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46832904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com