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