如何在Spring Data Rest中添加特定字段?

2024-01-02

我正在使用 Spring Data Rest 开发一个 Web 服务。

public interface BookRepository extends PagingAndSortingRepository<Book, Long> {

    @Override
    @Query("select avg(rl.rating) as rating, b from ReadingList rl join rl.book b group by rl.book order by rating desc")
    Page<Book> findAll(Pageable pageable);
}

当我在 JPQL 中进行如上选择时,“avg (rl. rating) as rating”列没有如下图所示的名称。

在此输入图像描述 https://i.stack.imgur.com/8FS0Q.png

评分:4.0
我想做这个服务。

另外,完整的源码位于 github 中。https://github.com/ohgamja3/readinglist-rest-server/ https://github.com/ohgamja3/readinglist-rest-server/

我想得到关于这个问题的帮助。 谢谢阅读。


您可以使用投影 http://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts在 repo 方法的输出中。

  1. 因此,根据您的情况,您可以设置投影,例如:
@Projection(name = "BookWithRating", types = { Book.class }) 
interface BookWithRating { 

  Float getRating(); 

  Book getBook(); 
}
  1. 然后设置查询方法:
@Query("select avg(rl.rating) as rating, b as book from ReadingList rl join rl.book b group by rl.book order by rating desc")
Page<BookWithRating> findAllWithRating(Pageable pageable);

注意输出参数的别名 - 它们的名称必须与投影 getter 匹配。

您也可以尝试使用this https://spring.io/blog/2016/05/03/what-s-new-in-spring-data-hopper#projections-on-repository-query-methods丰富数据模型的技术(请参阅如何“使用 SpEL 表达式通过 @Value 注释公开的属性以公开合成属性”)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Spring Data Rest中添加特定字段? 的相关文章

  • 创建当前日期的查询匹配[重复]

    这个问题在这里已经有答案了 可能的重复 在 JPA 查询中使用 CURRENT DATE 的示例 https stackoverflow com questions 1637323 example of using current date
  • 如何用Spring进行只读和读写的数据库路由

    我正在研究 Spring 中的事务路由 但我的应用程序存在运行时问题 我有两个 MySQL 数据库 一个用于读取 一个用于读 写 但是我的路由配置不起作用 当我应用只读配置时 我没有成功 这是我的配置 pom xml
  • Spring数据异常处理

    我正在使用 Spring Data JPA 开发一个项目 我需要处理 JpaRepository 方法调用中的一些异常 在下面的代码中 我需要拦截主键违规错误 但无法直接捕获异常 就我而言 当发生此类异常时 存储库层 JpaReposito
  • 设置 JPA 可分页对象的默认页面大小

    我有一个 PagingandSorting 存储库 它有一个接受可分页对象的方法 我还有一个通过 URL 接受可分页对象的控制器 我的用例是 如果用户在 URL 中指定页面大小参数 我必须为可分页对象采用该值 如果他没有提及 则采用默认值
  • 更新(合并)时缺少 Spring Data JPA 验证

    我正在使用 Spring Boot 1 5 4 RELEASE 和 Spring Data JPA 进行项目 遇到更新实体时未执行 Hibernate 验证器或至少在某些情况下未验证的问题 For Person如下所示 禁止使用空名称 并且
  • 跨多个表的 JPA 本机查询

    我将以下内容定义为存储库 dispenseRepository 中的本机查询 Query value SELECT p c s d from patient p consult c script s dispense d where p p
  • Spring Boot处理实体继承

    我正在处理这个tutorial http blog netgloo com 2014 12 18 handling entities inheritance with spring data jpa 处理实体继承 我有扩展用户实体的个人和公
  • 使用 Spring boot CrudRepository 过滤数据

    我有一个简单的 REST 服务 可以使用 Spring boot 访问数据CrudRepository 该存储库已经实现了分页和排序功能 如下所示 public interface FlightRepository extends Crud
  • 将 List 作为参数传递到 postgres 的函数中

    我有这样的 Spring 数据存储库接口 public interface MyEntityRepository extends JpaRepository
  • Spring Data JPA Redis:无法编写基于自定义方法的查询

    我已经使用 Redis 配置了 Spring Data JPA 并使用RedisRepositorieswith 提供了类似的方法find findAll 所有这些方法似乎都工作得很好 但我无法编写我的自定义方法 RedisEntity f
  • Spring Data Jpa项目使用ManyToMany关系时生成查询

    我有以下实体映射 Entity Table name books public class Book implements Serializable ManyToMany JoinTable name books2categories jo
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 添加与SDN4 + REST中另一个节点的关系

    我构建了一个简单的 SDN4 REST API 一个端点 名为player 包含一组属性 每个玩家都有一个Set
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • Spring 规范 - 谓词的联合

    我需要一个函数来过滤参数并构建查询 我有 4 个参数 因此如果我尝试为每个条件实现查询 我将不得不编写 16 2 4 实施 这不是一个好主意 我尝试通过界面改进我的代码Specification来自 Spring Data JPA 但我无法
  • 具有多个实体查找器的通用 spring jpa 存储库

    我的应用程序有超过 250 个表 每个表都有 ID 和名称列 我正在尝试将我们的应用程序从 hibernate 3 迁移到带有 hibernate 5 的 Spring JPA 4 3 在我当前的休眠层中 我有 选项 1 public cl
  • Spring Data:限制自定义查询的结果

    在我的 Spring 数据存储库中 我 必须 使用自定义查询 Query注解 我知道我可以限制这样的命名查询中的结果数量 Iterable
  • 具有自定义集合属性的 JPA 投影

    我们正在使用 Spring Data 并尝试使用子查询创建自定义查询 结果投影有一个数组和其他属性 我们的问题在于子查询数组 public interface ProfesionalRepository extends JpaReposit
  • Spring Data JPA findOne() 更改为Optional 如何使用这个?

    我在学SpringBoot2 0 with Java8 我遵循了一些博客制作教程示例 教程源码为 GetMapping id edit public String edit PathVariable Long id Model model
  • 如何配置Spring boot分页从第1页开始,而不是从0开始

    boot 1 4 0 可分页 用于分页 它工作正常 没有任何问题 但默认情况下 页面值从 0 开始 但在前端 页面值从 1 开始 那么是否有任何标准方法来增加值而不是手动增加代码内的页码 public Page

随机推荐