JPA / спящий порядок по атрибуту подкласса - PullRequest
0 голосов
/ 27 сентября 2011

Можно ли запрашивать сущности базового класса, но упорядочивать по атрибуту подкласса?

Например, (аннотации 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?

1 Ответ

1 голос
/ 27 сентября 2011

Извините, это невозможно.

Но вы можете использовать что-то вроде этого:

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) {
        ...
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...