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

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

Susan Sarandon
Susan Sarandon原创
2024-11-02 06:16:02622浏览

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

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

简介


从 Spring Data JPA GROUP 中将数据作为自定义对象检索BY 查询增强了数据表示并简化了进一步处理。本指南探讨了如何实现这一目标,展示了 JPQL 和本机查询的解决方案。

JPQL 查询


JPA 中的 JPQL 查询规范为返回定制提供本机支持

第 1 步:创建自定义 Bean


定义一个简单的 Bean 类来表示所需的输出结构: p>

<code class="java">public class SurveyAnswerStatistics {
  private String answer;
  private Long cnt;

  // Constructor
}</code>

第 2 步:返回 Bean实例


更新存储库方法以返回自定义 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 接口提供了替代方案解决方案:

第 1 步:定义投影接口

创建一个具有与所需输出对应的属性的投影接口: p>

<code class="java">public interface SurveyAnswerStatistics {
  String getAnswer();
  int getCnt();
}</code>

第 2 步:预计回报属性


更新存储库方法以返回投影属性:

<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中文网其他相关文章!

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