Spring Boot中无需@Query/@NativeQuery实现Hibernate查询返回List<String>
无需@Query或@NativeQuery获取Customer姓名列表的方法
当然有,Spring Data JPA提供了两种无需编写注解查询的方式来实现需求:
1. 使用派生查询方法
Spring Data JPA可以根据方法名自动生成JPQL查询,直接返回指定属性的列表。只需在你的Repository接口中定义如下方法:
List<String> findNameBy();
或者采用更直观的命名:
List<String> findAllName();
框架会自动解析方法名,生成对应的查询语句 select c.name from Customer c,最终返回所有Customer的name属性列表。
注意:确保Customer实体类中存在name属性,并且有对应的getName() getter方法,这样框架才能正确映射属性值。
2. 使用投影接口
如果后续需要扩展返回的属性,投影接口是更灵活的方式:
首先定义一个仅包含需要获取属性的投影接口:
interface CustomerNameProjection { String getName(); }
然后在Repository接口中定义返回该投影列表的方法:
List<CustomerNameProjection> findAll();
调用该方法后,你可以遍历列表通过getName()方法提取所有姓名:
List<String> names = customerRepository.findAll().stream() .map(CustomerNameProjection::getName) .collect(Collectors.toList());
内容的提问来源于stack exchange,提问作者Galet
相关产品推荐
相关产品推荐

