首先,这不是Spring Data: Override save method的副本。我想覆盖保存方法,我知道在哪里可以找到documentation,但我的问题是如何在自定义代码中调用原始实现。
要覆盖spring-data-*中的save()方法,可以执行如下操作:
interface CustomizedSave<T> {
<S extends T> S save(S entity);
}
class CustomizedSaveImpl<T> implements CustomizedSave<T> {
public <S extends T> S save(S entity) {
// Your custom implementation
}
}
interface UserRepository extends CrudRepository<User, Long>, CustomizedSave<User> {
}
interface PersonRepository extends CrudRepository<Person, Long>, CustomizedSave<Person> {
}
我的问题是如何调用save()的“超级”实现?在spring-data-elasticsearch中,默认的save()实现并不容易设置(基本上我需要复制AbstractElasticsearchRepository源代码),所以我不想这样做。
发布于 2018-08-09 21:49:39
@Autowired
private EntityManager em;
@Override
public User save(User entity) {
JpaRepositoryFactory jrf = new JpaRepositoryFactory(em);
UserRepositories repoWithoutCustom = jrf.getRepository(UserRepositories.class);
do somth....
}
其中repoWithoutCustom
是你所需要的,你的UserRepository
没有任何定制的方法。只需使用所需的RepositoryFactory
,在您的情况下,根据我的理解是弹性的
https://stackoverflow.com/questions/51764388
复制相似问题