spring-data - Spring 数据jpa。部分自定义存储库实现

标签 spring-data spring-data-jpa

我们可以编写存储库的自定义实现:

interface UserRepositoryCustom {
  public void someCustomMethod(User user);
}

class UserRepositoryImpl implements UserRepositoryCustom {

  public void someCustomMethod(User user) {
    // Your custom implementation
  }
}

但是如果我只想自定义某些方法怎么办?例如:

interface UserRepositoryCustom {
  public User findByFirstName(String firstName);

  @Query("select u.firstName from User u where u.age > 18")
  public Set<String> findAllAdultUsers();

  public void someCustomMethod(User user);
}

class UserRepositoryImpl implements UserRepositoryCustom {
  //I want implement only this method
  public void someCustomMethod(User user) {
    // Your custom implementation
  }
}

如果我声明一个实现接口(interface)的类,我必须实现所有方法,但我只想为一个方法编写自定义逻辑。 是否有可能做到这一点?也许我可以让这个类变得抽象? spring data 会解决这个问题吗?

最佳答案

我认为唯一的解决方案是将方法拆分为两个接口(interface):第一个 - 用于 spring 查询方法,第二个 - 用于自定义实现,如文档中所示:http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.single-repository-behaviour .

但我认为使用抽象类的解决方案会更加自然和逻辑:您只提供所需的方法实现,而 spring data 会为您完成其余的工作。

关于spring-data - Spring 数据jpa。部分自定义存储库实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362594/

相关文章:

java - 如何在 Spring Data (JPA) 派生查询中按多个属性排序?

java - 类似于 Golang 中 Spring Data JPA 的框架

jpa - Spring 数据按给定键内的映射值排序

java - "No qualifying bean of type"用于 Spring Boot 中的 JPA 存储库

java - 如何在 Spring Boot 中动态获取 EntityGraph

java - Spring 数据休息 : RepositoryEventHandler methods not invoked

java - JPA 插入 + Oracle 序列和带有 H2 的 Junit

java - 关系未设置为一对多关系

java - 如何使用 spring jpa 存储库仅更新特定字段?

java - 找不到类型用户的属性索引