如何使Hibernate Spring Repository返回HashMap

时间:2015-02-12 01:16:53

标签: java spring hibernate

通常我们将查询编写为

@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

2 个答案:

答案 0 :(得分:3)

你看过this post吗?

此外,在此次尝试中,您仍在寻找列表

@Query("SELECT new map (a.someId, a) FROM Foo a WHERE a.someId = :id")
List<Foo> findAllBySomeIdAsMap(Long id);

您是否尝试更改签名?

答案 1 :(得分:0)

我已经解决了一个类似的映射问题(我想在静态数据表中加载每个值,因为我知道我将在一个过程中全部使用它们)。 因此,这就是我对这个问题的解决方案(不可使用'where a.someId = id')。 它使用findAll(),我确定它可以使用具有ID限制的任何其他“查找”方法。

huawei mate 10 lite