如何从 SpringBoot 存储库接口返回 HashMap

问题描述 投票:0回答:1

我想返回一个HashMap,其中属性(String)的编号作为键,Long作为值。

但是我尝试了很多方法,但还是被卡住了。

@Repository
public interface ICBT_Repository_Owner extends JpaRepository<PropietarioModel, Long> {


    @Query(value = "SELECT new map(p.numProperty, p.idPropietario) FROM PropietarioModel p", nativeQuery = false)
    HashMap<String, Long> findProperties();

    @Query(value = "SELECT COUNT(p.numProperty) FROM PropietarioModel p", nativeQuery = false)
    Long countProperties();
}

这是代码,但我不知道该怎么做。

java spring-boot jpa spring-data-jpa
1个回答
0
投票

首先,重命名您的存储库名称以遵循此处

所述的约定

将查询的返回类型更改为 ListList>

@Repository
public interface ICBT_Repository_Owner extends JpaRepository<PropietarioModel, Long> {

    @Query("SELECT p.numProperty, COUNT(p.idPropietario) FROM PropietarioModel p GROUP BY p.numProperty")
    List<Object[]> findProperties();
}

您可以将 List 处理为 HashMap:

@Service
public class PropertyService {

    @Autowired
    private ICBT_Repository_Owner repositoryOwner;

    public HashMap<String, Long> getProperties() {
        List<Object[]> results = repositoryOwner.findProperties();
        HashMap<String, Long> propertiesMap = new HashMap<>();

        for (Object[] result : results) {
            String numProperty = (String) result[0];
            Long count = (Long) result[1];
            propertiesMap.put(numProperty, count);
        }

        return propertiesMap;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.