簡體   English   中英

JOOQ - 使用RecordMapper映射單個記錄

[英]JOOQ - map a single record using RecordMapper

我無法使用RecordMapper mapper通過fetchOne / fetchAny檢索的單個記錄。

如果我使用例如(如在手冊中)

List<Something> list =  create.selectFrom(TABLE).fetch().map(mapper);

有用,

但如果我使用相同的映射器:

Something pojo = create.selectFrom(TABLE).fetchOne().map(mapper);

它沒有編譯。

謝謝您的幫助

這可能與泛型有關。 Result.map()采用RecordMapper<? super R,E> RecordMapper<? super R,E>參數類型, Record.map()采用RecordMapper<Record,E> ,因為Record沒有R遞歸泛型類型定義。

換句話說,如果你想為Result.map()Record.map()重用相同的映射器,遺憾的是,你需要將它RecordMapper<Record, E> ,這意味着你將失去一些記錄類型的類型安全性。

解決方法是僅為了映射而創建新結果:

Result<TableRecord> result = DSL.using(configuration).newResult(TABLE);
result.add(record);
Something pojo = result.map(mapper).get(0);

Lukas Eder提供的另一種解決方法可能是直接使用映射器:

TableRecord record = create.selectFrom(TABLE).fetchOne();    
Something pojo = mapper.map(record);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM