簡體   English   中英

如何使Hibernate Spring Repository返回HashMap

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM