3 回答

TA貢獻1884條經(jīng)驗 獲得超4個贊
好吧,我希望這misraMessagesService.findAllMisraMessagesFromDb()是返回字符串列表。所以如果你不想改變你的findAllMisraMessagesFromDb()方法,你可以做這樣的事情:
List<String> messages = misraMessagesService.findAllMisraMessagesFromDb();
Set<String> uniqueMsgs = new HashSet<String>(messages);
或者您也可以在misraMessagesRepository以下位置創(chuàng)建一個新方法:
@Query("SELECT DISTINCT name FROM MisraMessages")
public List<MisraMessages> findDistinctMisraMessagesFromDb();
兩者中的任何一個都可以。

TA貢獻1853條經(jīng)驗 獲得超18個贊
永遠不要用 JAVA 方式做同樣的事情,因為它只是雙倍處理時間。
我會避免在 Java 級別代碼中進行處理,因為查詢級別很容易實現(xiàn)。
只需使用Select distinct
關(guān)鍵字,它就像一個魅力..!!
把事情簡單化。

TA貢獻1815條經(jīng)驗 獲得超10個贊
如果這會導(dǎo)致問題并且需要刪除重復(fù)項,最好不要將重復(fù)項帶入內(nèi)存。
因此,不要使用存儲庫方法 - misraMessagesRepository.findAll();,您需要在該存儲庫中編寫一個新方法,該方法返回DISTINCT結(jié)果并在 DAO 中使用該方法。
@Query("SELECT DISTINCT * FROM MESSAGES_TABLE" , nativeQuery = true)
List<MisraMessages> findDistinctMessages();
您還沒有顯示您的存儲庫,所以我使用了虛擬表名。如果仍然感到困惑并需要更好的答案,請顯示您的存儲庫代碼和實體詳細信息。
添加回答
舉報