[英]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.