我正在使用 jpa 分頁并獲取 Page 物件,但我想在對 SkcDto 進行一些操作后將另一種型別的 Page 物件回傳到前端。我已經有從 SkcDto 創建 IQRecordResultDTO 陣列的操作
private IQRecordResultDTO[] generateIQRecords(List<SkcDTO> iqList) {
//Some operations
return iQRecordResultDTO[];
}
這是呼叫上述轉換代碼的代碼:
public Page<SkcDTO> generateIQRecordsPage(Query query, Pageable pageable) {
Page<SkcDTO> skcDTOPage = skcService.iqRecordsByCriteriaAsPage(query, pageable);
List<SkcDTO> skcList = skcDTOPage.getContent();
IQRecordResultDTO[] resultArray = generateIQRecords(skcList);
//HERE IS WHAT I WANT AND NEED TO BE CHANGE I THINK. OR JUST SET NEW CONTENT[] AND ALL OTHER STUFF WILL BE SAME LIKE PAGENUMBER, TOTAL ELEMENT ETC.
Page<IQRecordResultDTO> iqResultPage = skcDTOPage.map(skc -> {
IQRecordResultDTO resultDto = convertSkcToIQResultDTO(skc);
return resultDto;
});
return skcDTOPage;
}
我已經成功地擁有了頁面,但是如果我將分頁應用于此頁面,那么我會在另一個頁面上進行分頁,結果會變得錯誤。所以我只想回傳正確型別的 Page 物件,一切都將相同(頁碼、totalPage、totalElement 等),但物件的content[]將設定為另一種型別。
我找不到類似“只復制頁面,包括除content[]之外的所有元素”之類的東西
uj5u.com熱心網友回復:
嘗試:
Page<IQRecordResultDTO> iqResultPage = new PageImpl<IQRecordResultDTO>(
Arrays.asList(generateIQRecords(skcDTOPage.getContent())),
skcDTOPage.getPageable(),
skcDTOPage.getTotalElements()
);
uj5u.com熱心網友回復:
不確定我是否理解您實際上想問的問題,因為您似乎已經根據您問題中的代碼弄清楚了...
因此,請考慮您已經擁有Page<SkcDTO>,并且想要將其轉換為Page<IQRecordResultDTO>. 您首先需要有一個函式來定義如何將一對一轉換SkcDTO為IQRecordResultDTO:
public IQRecordResultDTO toIQRecordResultDTO(SkcDTO skc){
}
然后你可以簡單地使用Page.map()它來轉換它:
Page<SkcDTO> skcPage = .........
Page<IQRecordResultDTO> result = skcPage.map(skc->toIQRecordResultDTO(skc));
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412171.html
標籤:
