Как использовать критерии для отношения «многие ко многим»? - PullRequest
0 голосов
/ 04 марта 2012

Добрый день. Изучив Hibernate, стало необходимо написать следующий запрос, используя критерии. Есть две сущности - фруктовый магазин и тип общения - многие ко многим. Соответственно, у нас есть буквально три таблицы (и соответствующие классы Java): Fruit (id, name), Shop (id, name) и ShopFruit (shop_id, fruit_id). Так как же с критерием получения списка магазинов продавать, скажем, мандарин? Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2012

Я думаю, вы можете использовать псевдоним, например, так:

List questions = session.createCriteria(Shop.class)
  .createAlias("Fruits", "f")
  .add(Restrictions.eq("f.name", "tangerine"))
  .list();

См. Также этот вопрос .Однако, я думаю, вы также можете решить эту проблему с помощью набора в отображении Hibernate для Fruit:

<set name="stores" table="ShopFruit" cascade="all">
  <key column="fruit_id" />
  <many-to-many column="store_id" />
</set>

Расширяет ваш класс Fruit набором магазинов:

class Fruit {
  ...
  Set<Store> stores;
  ...
}

Если вы загружаетеобъект «tangerine» Fruit из базы данных, переменная stores должна иметь все магазины, продающие его.

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