实现类的接口中的方法在服务类中不可见

时间:2014-08-24 15:23:05

标签: java interface

我在实现@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中定义的新方法可见?

0 个答案:

没有答案