データベース アプリケーションの「タイプ別検索」調査を行おうとしています。特に、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 のクラスを見つけた結果を得る方法について何かアイデアはありますか?