java - JOOQ fetchLazy 进入 POJO

标签 java jooq

所以我想使用 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/

相关文章:

spring - 使用 Spring、JOOQ、Postgres 和 ActiveMQ 时无回滚

java - utf8_unicode_ci 字符串插入错误?

java - 用java创建图像

java - 在 Kotlin 中使用带有 @NotNull setter 和 @Nullable getter 的 Java 字段

java - 构造函数中输入的类型不正确

java - 使用 Karaf 的 features-maven-plugin maven 插件需要帮助... osgi

java - 无法膨胀 android.view.InflateException : Binary XML file line #24: Error inflating class fragment

java - 使用 JOOQ 更新 PostgreSQL 中的 jsonb 值

java - 为什么我无法使用 Jooq 的 into 方法获取类中的数据库字段值?

java - JOOQ 更新集未填充值