我正在尝试对我的数据库应用程序进行“按类型查找”研究。特别是,我有一个类型的层次结构:Mother <-- Child1,Child2。我有 3 个相应的存储库,即注释 @Repository 和扩展 PagingAndSortingRepository 的类。
现在,我有一个控制器需要在数据库中加载所有 Child1(或 Child2)类型的实例。
这是我对 ControllerClassForTheSearch 类中的方法的建议:
public List<? extends Mother> findMotherByType(Class classToSearch)
throws FindException {
PagingAndSortingRepository<? extends Mother, Long> repo;
try {
repo = beanFactory.createBean(classToSearch);
} catch (Exception e) {
throw new FindException (this
.getClass().getName(), classRepository);
}
return repo.findAll();
}
beanFactory 变量在同一个类中定义如下:
@Controller
public class ControllerClassForTheSearch implements BeanFactoryAware {
private AutowireCapableBeanFactory beanFactory;
@Override
public void setBeanFactory(final BeanFactory beanFactory)
throws BeansException {
this.beanFactory = (AutowireCapableBeanFactory) beanFactory;
}
[...] // rest of the class code
但是,它不起作用:我的存储库是接口,因此无法创建它们(这是我得到的错误)。在其他类中,存储库是自动装配的变量,它们工作正常,包括 Mother、Child1 和 Child2 的存储库。
你有什么想法我可以找到找到 Child1 类型的类的结果吗?