文档中的一切似乎都很简单、清晰和简单。该方法不希望以任何方式生成 - 而不是被覆盖的方法,而是调用标准的 findAll() 方法。
我正在尝试覆盖 Page findAll(Pageable pageable); 标准存储库 PagingAndSortingRepository<T, S>:
存储库:
@Repository
public interface EntityRepository extends PagingAndSortingRepository<Entity, Long>, CustomisedEntityRepository<Entity> {
@Override
Page<Entity> findAll(Pageable pageable);
}
与重写方法的接口:
@NoRepositoryBean
public interface CustomisedEntityRepository<T> {
Page<T> findAll(Pageable pageable);
}
类,具有重写方法的实现:
public class CustomisedEntityRepositoryImpl<T> implements CustomisedEntityRepository<T> {
@PersistenceContext
private EntityManager em;
private final Logger logger = LoggerFactory.getLogger(CustomisedUntityRepositoryImpl.class);
@Autowired
private AdminService adminService;
@Override
@Transactional
public Page<T> findAll(Pageable pageable) {
Logger.debug("This is a body of overridden method")
//There is some user's implementation here
}
//and others private methods
}
其实,这一切是为了什么。最初,我不想重写该方法,而是完全实现自定义方法,例如:Page simpleMethod(Map<String, String> parameters, Pageable pageable)。但工件拒绝部署,指的是 Entity 类型没有 simpleMethod 属性。据我了解,Spring并没有尝试创建自定义方法,而是固执地尝试根据我的名字生成一些基本方法,例如findByName,并仔细搜索了我的Entity中的simpleMethod属性,谷歌搜索了一天,我从来没有找到答案,我决定尝试覆盖标准方法,但这里也出了问题。
如果有人知道我仍然不知道、分享或某处代码中存在某种错误的东西,我将非常感激。我已经用谷歌搜索了所有内容,但找不到解决方案。
感谢大家的时间和关注!