繁体   English   中英

JPA /休眠顺序(按子类)属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM