gpt4 book ai didi

java - 使用 WHERE 子句中的多对多集(连接表)进行查询

转载 作者:行者123 更新时间:2023-12-04 05:56:19 24 4
gpt4 key购买 nike

例如,我有这样的映射文件

   <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();

但它不会工作。返回的错误是:

无法解析属性:shop_id of:my.test.model.Shop。我已经搜索了很多,但仍然没有找到访问 hql 中“多对多”子集的正确方法。这可能吗?或者我需要将 Product_Shop 表映射到模型类?

更新 :似乎没有其他方法,我最终将 Product_Shop 映射到一个类中。

最佳答案

您应该在 wgere 子句中使用分配给连接实体的别名:

select p from Product p inner join p.retailers retailing 
where retailing.shop_id = :shopId

旁注:您应该遵守 Java 命名约定: shopId而不是 shop_id .

关于java - 使用 WHERE 子句中的多对多集(连接表)进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9477798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com