如何使用“多对多”关系的标准?

时间:2012-03-04 12:20:56

标签: java hibernate

下午好。学习Hibernate,有必要使用条件编写以下查询。有两个实体 - 水果店和通信类型 - 许多人。因此,我们实际上有三个表(以及相应的Java类):Fruit(id,name),Shop(id,name)和ShopFruit(shop_id,fruit_id)。那么,就像获得一个销售商店名单的标准一样,比如橘子?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你可以使用这样的别名:

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

另见this question。但是,我认为您也可以使用Hibernate Mapping for 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变量应该让所有商店都出售它。