我有一個 JPA 物體用戶,其中包含與 UserStats 物體的 OneToMany 關系。我已經重構了現有代碼以使用這個新的 UserStats 物體,并且之前為了管理與勝利率相關的功能,我將勝利率作為屬性存盤在 User 物體中。
但是,我認為最好讓一個方法回傳victoryRatio,因此在UserDetails 物體中實作了calculateVictoryRatio()。
這導致了一些問題,例如,我在 UserRepo 中有一個存盤庫方法:
List<User> findAllByOrderByVictoryRatioDesc();
我不能再直接在 repo 中搜索這個了,因為 evidenceratio() 方法在 User 物體的 UserStats 中,而且我認為你不能在 repo 方法中呼叫方法嗎?
所以我現在試圖在 userService 中做,但無法弄清楚:
public List<User> getBestVSUsers() {
List<User> users = userRepository.findAll();
for (User user: users
) {
user.getUserStats().get(0).calculateVictoryRatio();
}
}
但是,我需要根據 calculateVictoryRatio() 的結果對上面的串列進行排序。
同樣在我的 React 前端我正在渲染這個:
const topUserList = users.map(user => {
return <tr key={user.id}>
<td style={{ whiteSpace: 'nowrap' }} class="player-list-key-text">{user.name}</td>
<td className="player-list-key-text">{user.username}</td>
<td className="player-list-key-text"><span className="defeats">{user.victories}</span></td>
<td className="player-list-key-text"><span className="victories">{user.defeats}</span></td>
<td className="player-list-key-text"><span className="victory-score">{user.victoryRatio}</span></td>
</tr>
});
現在,我如何呈現以上的勝利比率、失敗和勝利,它們被封裝在 UserStats 物體中?我是否需要單獨提取并合并 2 個?或者我可以做類似的事情:
{user.userStats[0].victories}
我怎樣才能做到這一點?有一個更好的方法嗎?我可以在 userRepo 中呼叫方法嗎?
謝謝您的幫助
uj5u.com熱心網友回復:
嘗試這樣的事情:
PageRequest pageRequest = new PageRequest(pageNumber, pageSize, new Sort(new Order(Direction.DESC, "ORDER BY (VICTORIES/DEFEATS)"))
Page page = myRepository.findAll(specification, pageRequest);
您可以在 ORDER BY 的哪個位置放置您的比率公式。在這種情況下,我們會將計算結果放在您的 SGDB 上。
uj5u.com熱心網友回復:
只要您在查詢中加入該物體,就可以對相關物體進行排序。您可能需要在存盤庫中定義自定義查詢。
@Query("SELECT u from User u JOIN u.userStats us ORDER BY us.victoryRatio")
List<User> findAllCustomSort();
但是,顯然資料庫引擎在此處進行排序,與您的代碼無關。您還沒有向我們展示您的calculateVictory方法的內容,但是如果您必須根據您在代碼中進行的計算進行排序,那么它將無法正常作業。我懷疑是這種情況,因為您只是在談論將比率移動到另一個物體,而不是開始計算它。但如果是這樣,您當然可以始終只對記憶體中的串列進行排序。考慮到您沒有使用分頁,這也不會太糟糕。
或者,如果您絕對必須在資料庫中進行排序,那么我認為您別無選擇,只能在資料庫中為其創建自定義函式。不過,這會超出這個問題的范圍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/412177.html
標籤:
上一篇:Spring集成-http入站
下一篇:嵌套物體在保存后包含null
