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