我们可以编写存储库的自定义实现:
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数据会解决这个问题吗?
答案 0 :(得分:2)
我认为唯一的解决方案是在2个界面中拆分方法:第一个 - 用于弹簧查询方法,第二个用于自定义实现,如doc:http://docs.spring.io/spring-data/data-jpa/docs/current/reference/html/#repositories.single-repository-behaviour中所示。
但我认为使用抽象类的解决方案会更自然和逻辑:您只提供所需的方法实现,而spring数据则为您完成剩下的工作。