JPA 中的 JPQL 查询规范为返回自定义对象提供本机支持。
定义一个简单的 Bean 类来表示所需的输出结构:
<code class="java">public class SurveyAnswerStatistics { private String answer; private Long cnt; // Constructor }</code>
更新存储库方法以返回自定义 bean 的实例:
<code class="java">public interface SurveyRepository extends CrudRepository<Survey, Long> { @Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer") List<SurveyAnswerStatistics> findSurveyCount(); }</code>
虽然原生查询缺乏对 new 关键字的直接支持,但 Spring Data Projection 接口提供了一种替代方案解决方案:
创建一个具有与所需输出对应的属性的投影接口: p>
<code class="java">public interface SurveyAnswerStatistics { String getAnswer(); int getCnt(); }</code>
更新存储库方法以返回投影属性:
<code class="java">public interface SurveyRepository extends CrudRepository<Survey, Long> { @Query(nativeQuery = true, value = "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer") List<SurveyAnswerStatistics> findSurveyCount(); }</code>
使用 SQL AS 关键字将结果字段无缝映射到投影属性。
以上是如何从 Spring Data JPA GROUP BY 查询返回自定义对象?的详细内容。更多信息请关注PHP中文网其他相关文章!