通常我们将查询编写为
@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
答案 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