将@Query参数替换为映射中的值



我有以下查询

@Query("SELECT g.id as name FROM Group g")
List<Group> findGroups(Map<Long, String> groupNameMap)

我只有实体Group的id。我想使用groupNameMap将id映射到名称。我想做如下的事情

@Query("SELECT :groupNameMap[g.id] as name FROM Group g")
List<Group> findGroups(Map<Long, String> groupNameMap)

以便返回组名列表而不是id。这能实现吗?

您可以简单地将其实现为一个新方法:

@Query("SELECT g.id as name FROM Group g")
List<Long> findGroups();
default List<Group> findGroups(Map<Long, String> groupNameMap) {
return findGroups().stream()
.map(id -> new Group(groupNameMap.get(id)))
.collect(toList());
}

最新更新