繁体   English   中英

JOOQ fetchLazy 进入 POJO

[英]JOOQ fetchLazy into POJO

因此,我想使用DSLContext将一些记录懒惰地提取到 POJO 中, DSLContext所示:

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被垃圾收集时,它才会关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM