当前位置: 首页 > 知识库问答 >
问题:

JOOQ将Lazy引入POJO

柴默
2023-03-14

因此,我希望使用DSLContext将一些记录懒洋洋地取入POJOs,如下所示:

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

我当然可以做以下事情,但感觉不对:

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

谢了!

共有1个答案

黄德明
2023-03-14

这只能通过以下方式使用jOOQ API来完成:

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

但是,请注意,迭代器不扩展autocloseable,因此,您可能有一个悬空资源(游标的基础JDBCresultset),它不会在停止处理结果时立即关闭。只有在没有错误地完成处理或对ResultSet进行垃圾回收时,它才会关闭。

 类似资料:
  • 我使用Jooq-3.1.0在Spring-4中为Oracle和Postgresql生成和执行动态查询。在一个场景中,我有一个分区表,我需要使用JOOQ查询它。我使用,其中是在查询生成方法中作为字符串接收的字符串,例如。(模式对于不同的数据库不同,并且在外部属性文件中配置)。JOOQ生成sql,但在表名周围使用双引号。如下所示的查询和错误 查询

  • lazy: Boolean 延迟渲染 当动画第一次渲染并读取其起始值时,将默认自动“延迟渲染”该特定瞬间,这意味着它将尝试延迟渲染(写入值)直到最后时间点。这可以提高性能,因为它避免了某些浏览器所做的读/写/读/写布局颠簸。 如果要为特定补间禁用延迟渲染,可以进行设置lazy:false。 或者由于零持续时间的补间默认情况下不进行延迟渲染,因此您可以通过设置lazy:true等方式为其提供延迟渲染

  • Wraps an object and returns a Sequence. For null or undefined, simply returns an empty sequence (see Lazy.strict for a stricter implementation). For arrays, Lazy will create a sequence comprising the

  • #这个是我自己收集整理的一些常用的工具类##有好的工具类,欢迎提交PR 作者微博: @海淀区小鬼风尘 ##增加常用库的README_LIB常用库 内容说明 工具 描述 AnimationUtils 动画工具类 AppUtils APP相关信息工具类 AssetDatabaseOpenHelper 目录资源获取 Base64 加密 BitmapUtil 获取Bitmap和对Bitmap的操作 Cha

  • 我试图在我的表中插入一条新记录 DSLContext类型中的方法newRecord(Table, Object)不适用于参数(String, ModelBook) 但是和这个一样:http://www.jooq.org/doc/2.5/manual/sql-execution/fetching/pojos/ 所以我不能做:

  • 我正在Spring 4应用程序中使用jOOQ 3.8.4和PostgreSQL 9.5。我有下表和类型定义 然后我尝试使用jOOQ插入,即: 然后我得到: 我做错了什么? 更新 我尝试按照Lukas的建议重命名shop.money类型(从到),但我相信问题与模式有关。请参阅更新的错误。 也许类型中的类型是一个问题!