我想返回一个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();
}
这是代码,但我不知道该怎么做。
首先,重命名您的存储库名称以遵循此处
所述的约定将查询的返回类型更改为 List 或 List
@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;
}
}