在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"并且
eSKUskuType="DEFAULT",并且SKUavailability aa.available = true && a.day = 5


你的评论


  我在想上面的查询可用和a.day部分将检查所有的skus,而不仅仅是默认的sku。


是的,查询执行将循环遍历您的CROSS JOIN集,但将仅返回符合上述条件的产品。

关于mysql - hibernate 多个联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22933716/

10-13 22:22