我有一个Spring Data JPA存储库接口,如下所示:
@Repository public interface DBReportRepository extends JpaRepository{ List findAll(); List findByClientId(Long id); }
有没有一种解决方法可以使相同但是要返回类型的集合HashMap
?我查看了Spring Data类,除了List <>返回值之外找不到任何其他内容.
我不认为你会找到一个更简单的解决方案,创建一个简单的一个衬垫,将结果转换为地图.使用java 8 lambdas简单快捷:
MaptransactionMap = transactionList.stream() .collect(Collectors.toMap(Transaction::getId, Function.identity()));
只需解决类似的问题,帕特里克(Patrick)的回答就可以帮助您,但可以通过指出添加位置来加以改进。
为了使它看起来像JPA回购返回一个地图,需要进行改进以将其包装在存储库界面中的默认方法中。省去了在所有使用类中执行流的麻烦。
@Repository public interface DBReportRepository extends JpaRepository{ List findAll(); default Map findAllMap() { return findAll().stream().collect(Collectors.toMap(TransactionModel::getId, v -> v)); } List findByClientId(Long id); default Map findByClientIdMap(Long id) { return findByClientId(id).stream().collect(Collectors.toMap(TransactionModel::getId, v -> v)); } }