我有一個表cartitems其中的項目添加到購物車都存儲在它的列:休眠加入查詢條件得到加入表都列
ID(主鍵),SKU數量,用戶id,狀態,大小和其他幾個欄目
的我也有我們在其中存儲庫存水平和productAvailability表在那裏我有以下欄目:
SKU,規格,數量,BatchId(主Key)
另外產品表具有一到許多與productAvailability關係表和cartitems表既對SKU鍵現在
,用於與狀態,爲每個cartitems = 1和用戶id = X我們要檢查產品的可用性和如果有的話,我需要CartItems行和產品的BatchId:
我到這裏:
Criteria criteria = session.createCriteria(CartItems.class,"cartitems");
criteria.add(Restrictions.eq("userId", userId));
criteria.add(Restrictions.eq("status", status));
criteria.createAlias("product", "product");
criteria.createAlias("product.productAvailability", "productavailability");
criteria.add(Restrictions.eqProperty("productavailability.size", "cartitems.size"));
criteria.add(Restrictions.geProperty("productavailability.quantity", "cartitems.quantity"));
List<CartItems> cartItems = criteria.list();
以上基本不以下:
select * from cartItems
where productAvailability.quantity >= cartitems.quantity and
productAvailability.size = cartitems.size and
productAvailability.sku = cartitems.sku and
cartitems.userId = ? and
cartitems.status = ?
這樣,我不能讓BatchId。我嘗試使用JOIN FETCHTYPE,但它仍然加載了所有尺寸的sku的productAvailability表。是否有任何方法爲每個cartItems獲取cartItems和相應的BatchIds?
我想避免迭代。但看起來沒有其他選擇而不是迭代 –