是否可以查询基类的实体,但按子类的属性排序?
例如,(JPA注释省略)
class Base
{
int base;
}
class SubA extends Base
{
int subA;
}
class SubB extends Base
{
int subB;
}
并假设数据库包含所有 3 个类的实例。
我想以多态方式检索所有 Base 实例,并按子类的属性排序。如果该属性不存在,则假定它为空。 (想象一下所有这些实例都显示在一个表中,具有所有属性,并且允许用户对任何属性进行排序。)
我希望得到类似的东西:
select b from Base b order by b.subA
但显然 subA 属性未被识别。
是否有某种方法可以尝试进行强制转换以便可以使用 subA 属性?
最佳答案
抱歉,这是不可能的。
但是你可以使用这样的东西:
TypedQuery<Base> baseQ = em.createQuery("SELECT b FROM Base b", Base.class);
List<Base> resultList = baseQ.getResultList();
Collections.sort(resultList, new Comparator<Base>() {
@Override
public int compare(Base b1, Base b2) {
...
}
});
关于java - JPA/hibernate 按子类属性排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7563012/