在HQL中获取产品时,我很少感到困惑。
产品具有多个SKU,并且SKU具有多个可用性。
以下是我的hql查询。
select distinct p from Product p
join p.skus sku
join sku.availibility a
where sku.skuType = "DEFAULT" AND a.available = true && a.day = 5;
我必须过滤skuType为“ DEFAULT”且仅该sku(“ DEFAULT”类型)的可用性的产品。
我很困惑,因为..我想在上面的查询中可用,并且a.day部分将检查所有skus,而不仅仅是默认的sku。
此查询的行为如何?
我错了吗 ?如果是的话,如何对此进行查询构造?
谢谢,
安奇
最佳答案
不,您的查询将仅返回一组products P
,其中e
中的每个P
与以下内容匹配:e
具有SKU
且具有skuType="DEFAULT"
并且e
的SKU
是skuType="DEFAULT"
,并且SKU
的availability a
在a.available = true && a.day = 5
你的评论
我在想上面的查询可用和a.day部分将检查所有的skus,而不仅仅是默认的sku。
是的,查询执行将循环遍历您的CROSS JOIN
集,但将仅返回符合上述条件的产品。
关于mysql - hibernate 多个联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22933716/