[英]JPA/hibernate order by subclass attribute
是否可以查询基类的实体,但可以按子类的属性进行排序?
例如,(省略了JPA注释)
class Base
{
int base;
}
class SubA extends Base
{
int subA;
}
class SubB extends Base
{
int subB;
}
并假定数据库包含所有3个类的实例。
我想检索所有以多态形式在子类的属性上排序的Base实例。 如果该属性不存在,则假定它为null。 (想象所有这些实例都显示在具有所有属性的表中,并且允许用户对任何属性进行排序。)
我希望有这样的东西:
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) {
...
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.