所以我想使用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();
谢谢!
答案 0 :(得分:1)
这可以使用jOOQ API完成,如下所示:
dsl.selectDistinct(STUFF.FIELD)
.from(STUFF)
.fetchLazy()
.stream()
.map(r -> r.into(Something.class))
.iterator();
但是,请注意Iterator
不会扩展AutoCloseable
,因此,您可能有一个悬空资源(Cursor
的基础JDBC ResultSet
),早在您停止处理结果时就不会关闭。只有当您完成没有错误的处理或者ResultSet
被垃圾收集时,它才会关闭。