gpt4 book ai didi

nhibernate - hql join - 加入的预期路径

转载 作者:行者123 更新时间:2023-12-04 18:38:33 25 4
gpt4 key购买 nike

我有以下 hql。如果我不尝试包含“OrderItem”实体,这就可以正常工作。我知道 hql 中没有“on”子句。加入orderItem的最佳方式是什么

 var hql = new StringBuilder();
hql.Append(
@"select p.Id, p.Name, p.Description, p.ProductKey, p.CustomerSku, p.ImageUrl, p.ImageThumbUrl, p.ImageLargeUrl,COUNT(oi.Quantity) as quantity
from ProductCampaign pc
join pc.Product p
left join OrderItem oi with oi.Product.Id = p.Id
where pc.Campaign.Id = :CampaignId ");

hql.Append(@"group by p.Id, p.Name, P.Description, p.ProductKey, p.CustomerSku, p.ImageUrl, p.ImageThumbUrl, p.ImageLargeUrl ");
var results = _session.CreateQuery(hql.ToString());
results.SetParameter("CampaignId", campaignId);

这是我希望实现的 sql。

select p.Id, p.name, p.description, p.ProductKey, p.CustomerSku, p.ImageUrl, p.ImageThumbUrl, p.ImageLargeUrl,COUNT(oi.Quantity) as quantity from ProductCampaign pc
inner join Products p on pc.ProductId = p.Id
left join orderitems oi on pc.ProductId = oi.ProductId
where pc.CampaignId = 1
group by p.Id, p.name, p.description, p.ProductKey, p.CustomerSku, p.ImageUrl, p.ImageThumbUrl, p.ImageLargeUrl

最佳答案

为了使用 HQL 左连接,您必须映射关系,因为来自“来自”表之一的路径是预期的(参见 13.3. Associations and joins )

尝试将 OrderItems.Product id 更改为适当的 Product many-to-one,并使用 right join

作为旁注,您的实体名称应该是单数的。看起来您只是将表结构复制为类。

关于nhibernate - hql join - 加入的预期路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3906191/

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