更新需要2NHibernate的:左外连接上子查询
这里是两个查询我的工作(呼叫在这两个查询省略)
我想获得以下查询
SELECT *
FROM product
LEFT OUTER JOIN
(
SELECT *
FROM Cart
LEFT OUTER JOIN
cartproducts
ON Cart.Id = cartproducts.Cart_id
WHERE Cart.username = 'user'
)
AS CartFiltered
ON product.Id = CartFiltered.product_id
,但我似乎总是得到
SELECT *
FROM product
LEFT OUTER JOIN
cartproducts
ON product.Id = cartproducts.Product_id
LEFT OUTER JOIN
Cart
ON
cartproducts.cart_id = cart.id
WHERE Cart.username = 'user'
如何管理创建第一种查询类型? 我希望我的问题是更清晰:)缺乏明确的是,有时我的一个大敌:对
更新:
FWIW,我还没有找到答案,我目前加载分页的产品数据和整个购物车以显示正确的对象。 原油解决方案,但它的工作原理,它击败了我一直试图让Criteria API认可我为其主人的组合。我会非常有兴趣,如果有人能发生点我在正确的方向,虽然;)
你好,
我有一个很难的标准API书面下面的查询,我真的不知道该怎么做:我希望有人能够提供帮助。
在数据库中,我有产品。这些产品可以在许多购物车中(每个用户一个购物车),并且每个购物车可以包含许多产品,所以我们有许多关系。 我想显示每个产品的列表以及旁边的小图标,以通知用户此特定产品已在购物车中。我所做的是,我向NHibernate询问了我的产品,并在由购物车所有者过滤的购物车上执行左外连接。
Dim critPage As ICriteria = Session.CreateCriteria(GetType(Product)) _
.SetFirstResult(pageNumber * itemsPerPage).SetMaxResults(itemsPerPage) _
.CreateCriteria("Carts", "c", SqlCommand.JoinType.LeftOuterJoin) _
.SetProjection(plist) _
.SetResultTransformer(New TypedResultTransformer(Of ProductWithCartInfo)) _
.Add(Expression.Eq("c.User", username))
投影名单是在这里列的数量减少到什么是对ProductWithCartInfo类有趣。它只包含属性预测。
问题是,使用此查询,购物车过滤应用于整个结果集,并且我看不到每个产品都存在于用户的购物车中,而是看到用户购物车中的每个产品。
是否可以使用Nhibernate中的Criteria API在子查询上执行左外连接?有关信息,如果可能,我希望将其保留在Criteria API中。 谢谢
对不起托德,你是对的,也许我不是做足够的常识;)我编辑我的问题 – samy 2009-07-31 14:03:35