簡體   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