3 回答

TA贡献1884条经验 获得超4个赞
好吧,我希望这misraMessagesService.findAllMisraMessagesFromDb()是返回字符串列表。所以如果你不想改变你的findAllMisraMessagesFromDb()方法,你可以做这样的事情:
List<String> messages = misraMessagesService.findAllMisraMessagesFromDb();
Set<String> uniqueMsgs = new HashSet<String>(messages);
或者您也可以在misraMessagesRepository以下位置创建一个新方法:
@Query("SELECT DISTINCT name FROM MisraMessages")
public List<MisraMessages> findDistinctMisraMessagesFromDb();
两者中的任何一个都可以。

TA贡献1853条经验 获得超18个赞
永远不要用 JAVA 方式做同样的事情,因为它只是双倍处理时间。
我会避免在 Java 级别代码中进行处理,因为查询级别很容易实现。
只需使用Select distinct
关键字,它就像一个魅力..!!
把事情简单化。

TA贡献1815条经验 获得超10个赞
如果这会导致问题并且需要删除重复项,最好不要将重复项带入内存。
因此,不要使用存储库方法 - misraMessagesRepository.findAll();,您需要在该存储库中编写一个新方法,该方法返回DISTINCT结果并在 DAO 中使用该方法。
@Query("SELECT DISTINCT * FROM MESSAGES_TABLE" , nativeQuery = true)
List<MisraMessages> findDistinctMessages();
您还没有显示您的存储库,所以我使用了虚拟表名。如果仍然感到困惑并需要更好的答案,请显示您的存储库代码和实体详细信息。
添加回答
举报