Критерии гибернации - как можно ограничить количество возвращаемых дочерних классов? - PullRequest
1 голос
/ 20 октября 2011

У меня очень богатая иерархия классов сущностей.Я пытаюсь ограничить результаты в некоторых запросах только теми из определенного списка классов сущностей.Я делаю следующее ...

    detachedCriteria.add(Restrictions.disjunction().
            add(Restrictions.eq("class", FabricData.class)).
            add(Restrictions.eq("class", HostData.class)).
            add(Restrictions.eq("class", StorageSystemBase.class)).
            add(Restrictions.eq("class", SwitchData.class))
    );

Однако я получаю сообщение об ошибке ...

[testng-wrapper] java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.Integer
[testng-wrapper]        at org.hibernate.type.descriptor.java.IntegerTypeDescriptor.unwrap(IntegerTypeDescriptor.java:36)

Так как я могу перечислить подклассы, которые я хочу из запроса?

-Роберт

1 Ответ

0 голосов
/ 20 октября 2011

Полагаю, вы использовали дискриминатор ...

Способ, которым вы пробовали, возможен через HQL, но для критериев вам нужно указать значение дискриминатора вместо класса:

detachedCriteria.add(Restrictions.eq("class", "FABRICDATA_DISCRIMINATOR"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...