[英]How to make a Jpql query work in Spring Jpa Repository with Optional return?
[英]How to make Hibernate Spring Repository to return HashMap
通常我們將查詢編寫為
@Query("SELECT a FROM Foo a WHERE a.someId = :id")
Map<Long, Foo> findAllBySomeId(Long id)
有沒有辦法讓HashMap而不是List。
我想要Hashmap的key = someId和Value為Foo的鍵。
我試過這樣的
@Query("SELECT new map (a.someId, a) FROM Foo a WHERE a.someId = :id")
Map<Long, Foo> findAllBySomeIdAsMap(Long id);
但它返回了兩個項目,但a.someId為Value,鍵為0;
0=someId
1=Foo
你看過這篇文章了嗎?
此外,在此嘗試中,您仍在尋找列表 :
@Query("SELECT new map (a.someId, a) FROM Foo a WHERE a.someId = :id")
List<Foo> findAllBySomeIdAsMap(Long id);
你試着改變簽名嗎?
我已經解決了類似的映射問題(我想在靜態數據表中加載每個值,因為我知道在一個過程中我需要它們)。 所以這是我解決這個問題的方法(誠然沒有'where a.someId = id')。 它使用findAll(),我相信它可以使用任何其他'find'方法和你的id限制。
public interface FooRepository extends JpaRepository<Foo, String> {
// convenience method to provide a 'code -> object' mapping of all Foos
default Map<String, Foo> mapAll() {
return findAll().stream().collect(Collectors.toMap(o -> o.getCode(), o -> o));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.