Hibernate - ограничение для класса в списке - PullRequest
4 голосов
/ 08 июня 2010

Я пытаюсь получить список предметов, которые имеют определенный тип предметов в наборе.

Например:

<class name="Owner" table="OWNER">
<id name="id" column="OWNER_ID" />
<set name="cats" table="OWNER_CATS" lazy="false">
    <key column="OWNER_ID" />
    <many-to-many class="Cat" />
</set>

<class name="Cat" table="CAT" discriminator-value="C">
<id name="id" column="CAT_ID" />
<discriminator column="type" type="character" />

<subclass name="Lion" discriminator-value="L">
    <property name="teeth" />
</subclass>
</class>

Используя ограничения, как бы получить список владельцев, у которых львы являются домашними животными?

Iпробовал что-то вроде следующего безрезультатно:

criteria.createCriteria("cats").add(Restrictions.eq("class", Lion.class));

1 Ответ

5 голосов
/ 01 сентября 2010

На данный момент (хотя я не уверен, что это преднамеренно) способ, которым это работает, заключается в том, что вы должны указать значение дискриминатора в качестве значения ограничения, а не сам класс, поэтому:

criteria.createCriteria("cats").add(Restrictions.eq("class", "L"));

в вашем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...