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

时间:2015-07-11 22:46:09

标签: 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
  }
}

如果我声明一个实现接口的类,我必须实现所有方法,但我想只为一个方法编写自定义逻辑。 是否有可能做到这一点?也许我可以把这个课抽象出来? Spring数据会解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

我认为唯一的解决方案是在2个界面中拆分方法:第一个 - 用于弹簧查询方法,第二个用于自定义实现,如doc:http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.single-repository-behaviour中所示。

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