首页  >  文章  >  Java  >  如何在 Spring Data JPA GROUP BY 查询中返回自定义对象?

如何在 Spring Data JPA GROUP BY 查询中返回自定义对象?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-01 14:30:02410浏览

How to Return Custom Objects in Spring Data JPA GROUP BY Queries?

Spring Data JPA GROUP BY 查询中的自定义对象返回

Spring Data JPA 提供了一种使用 JPQL(Java Persistence)执行数据库操作的便捷方法查询语言)。当使用带有 GROUP BY 子句的自定义 JPQL 查询时,您可能希望返回自定义对象而不是内置 SQL 结果数组。

JPQL 解决方案

  1. 定义一个简单的 Bean 类:
<code class="java">public class SurveyAnswerStatistics {
    private String answer;
    private Long count;
    ... // getters and setters
}</code>
  1. 从存储库方法返回 Bean 实例:
<code class="java">@Query("SELECT new com.path.to.SurveyAnswerStatistics(v.answer, COUNT(v)) FROM Survey v GROUP BY v.answer")
public List<SurveyAnswerStatistics> findSurveyCount();</code>

原生查询解决方案

对于本机查询,使用 Spring Data Projection 接口而不是 bean 类:

  1. 定义投影接口:
<code class="java">public interface SurveyAnswerStatistics {
    String getAnswer();
    int getCnt();
    ... // additional getters
}</code>
  1. 从查询中返回投影属性:
<code class="java">@Query(nativeQuery = true, value = "SELECT v.answer AS answer, COUNT(v) AS cnt FROM Survey v GROUP BY v.answer")
public List<SurveyAnswerStatistics> findSurveyCount();</code>

重要说明

  • 使用 Bean 类的完全限定路径。
  • 使用 new 关键字调用 bean 构造函数。
  • 按照与 bean 构造函数参数相同的顺序传递属性。
  • 确保查询是有效的 JPA 查询。
  • 使用本机查询时,使用 SQL AS 关键字进行明确映射。

以上是如何在 Spring Data JPA GROUP BY 查询中返回自定义对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn