有没有办法按类派生自基类?
例如我有Animal.class,我有AnimalRepository。 我希望按派生类的类型找到动物,如下所示:
Animal animalRepository.findByDerivedClass(Class clazz);
与此同时,我没有事先提到它的派生类。它可能是猫,狗或新的我还不知道。有可能吗?
答案 0 :(得分:1)
是的,例如,您可以按类的类型创建一个具有休眠的选择:
= render "addform/_form.html.erb"
答案 1 :(得分:0)
接受的答案导致我使用标准(存储库无法执行,因此必须为存储库编写自定义方法,这意味着使用标准)
另请注意,此方法(如果在存储库中使用)必须根据jpa约定声明。
public <T extends Animal> List<T> findByDerivedClass(Class<T> clazz) {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<T> cq = cb.createQuery(clazz);
Root<T> root = cq.from(clazz); // we pass clazz here again, because magic...
cq.select(root);
return entityManager.createQuery(cq).getResultList();
}