【发布时间】:2012-03-17 16:19:38
【问题描述】:
例如,我有这样的映射文件
<class name="my.test.model.Product" table="PRODUCT">
...
<set name="retailers" table="product_shop" lazy="false">
<key column="PRODUCT_ID" />
<many-to-many column="SHOP_ID" class="my.test.model.Shop" />
</set>
...
</class>
现在我想查询特定商店 A 的产品。我想到了这样的事情:
String searchHql = "select p from Product p inner join p.retailers retailing where p.retailers.shop_id = :shopId";
@SuppressWarnings("unchecked")
List<Product> productList = sessionFactory.getCurrentSession().createQuery(searchHql ).setInteger("shopId", shopId).list();
但这行不通。返回的错误是:
无法解析属性:my.test.model.Shop 的 shop_id。我已经搜索了很多,但仍然没有找到访问 hql 中“多对多”子集的正确方法。这可能吗?或者我需要将 Product_Shop 表映射到模型类?
更新:似乎没有其他办法,我最终将 Product_Shop 映射到一个类中。
【问题讨论】:
标签: java hibernate many-to-many hql