我们可以编写存储库的自定义实现:
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/