更新需要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