java - 自定义 Spring Data REST 生成的默认查询

标签 java spring spring-data spring-data-rest

是否可以自定义为 Spring Data REST 生成的 findAll 和 findById 生成的默认查询?例如,选择列的子集,因为我发现设置 @JsonIgnore 不会更改生成的查询中的 SELECT 列本身。

搜索查询可以通过 @Query 自定义,但不确定如何处理其他链接,例如针对所有用户或用户/{id}

最佳答案

正如您所说,搜索查询可以通过@Query自定义,因此您只需在接口(interface)声明中使用Query注释覆盖默认方法

    public interface UserRepository extends JpaRepository<User, Long> {

       @Query("select u from User u where u.firstname like %?1")
       List<User> findAll();

       @Query("select u from User u where u.id == %?1")
       User findById(String id);
    }

如果您想选择列的子集,我建议使用公共(public)列创建新实体,该实体将映射到与内部演示文稿相同的表。

   class UserPublic
   ... public fields;

并基于新的实体存储库开放API

    public interface UserPublicRepository extends JpaRepository<UserPublic, Long> {}

关于java - 自定义 Spring Data REST 生成的默认查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26696395/

相关文章:

java - 在java中使用父引用类型访问变量

java - Spring Boot 禁用 Actuator root

Spring 启动@Transactional

java.lang.Double 不支持 Realm 对象

java - 多CPU编程

java - 检测主类

spring - Spring Security表单登录Tomcat中的SSL实现

java spring jpa使用entityManager.clear()时没有在数据库表中保存任何内容

java - Spring Data Repository JPA 实体继承问题 : Cannot instantiate abstract class or interface

java - 如何在 Spring-boot REST 上使用 Jackson 更改响应结构