我在实现@Repository
类中定义了一个方法,它是抽象基类的扩展并实现了一个接口。但是,@Repository
类中定义的方法在@Service
类中不可见,我不确定原因。
我将@Service
类定义为
@Service
@Transactional
public class CategoryService {
@Autowired
private IJpaRepository categoryRepository;
public CategoryService(){ }
/* service methods */
public List<Category> findTopLevelCategories(){
//findTopLevelCategories is not visible here
return categoryRepository.findTopLevelCategories();
}
}
其中IJpaRepository
是由
public interface IJpaRepository<T> {
T findOne(int id);
List<T> findAll();
T create(T entity);
T update(T entity);
void delete(T entity);
void deleteById(int id);
}
并且@Repository被定义为实现上述接口的抽象类的扩展:
@Repository
public class CategoryRepository extends AbstractJpaRepository<Category> implements IJpaRepository<Category> {
public List<Category> findTopLevelCategories(){
Query queryCategoryTopLevel = getEntityManager().createNamedQuery("findTopLevelCategories");
return queryCategoryTopLevel.getResultList();
}
/* Other overriding methods */
}
我最好的猜测是,@Autowired
绑定到IJpaRepository
,而不是实际的CategoryRepository
类。如果不对IJpaRepository
界面进行任何更改,如何才能使CategoryRepository
类中@Service
中定义的新方法可见?