首先,这不是Spring Data: Override save method的重复 。我想覆盖save方法,并且知道在哪里找到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源代码),所以我宁愿不这样做。
答案 0 :(得分:0)
@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
,就您所知,就使用Elastic