私はアイテムがカートに追加さcartitemsが中に保存されているテーブルがあるとの結合テーブルを取得してそれは列があります。Hibernateはクエリ条件に参加して、両方の列
ID(主キー)、SKUを、プライマリ
SKU、サイズ、数量、BatchId(:数量は、ユーザーID、状態、サイズ、および他の列
のカップルは は私も、どこで、次の列があり、我々は在庫レベルを格納しているproductAvailabilityテーブルを持っていますキー)
また製品テーブルステータス= 1、そのユーザーID = Xを有する各cartitemsためproductAvailabilityテーブルとすぐキー
SKUにcartitemsテーブルの両方と1対多の関係を有します我々は、製品の可用性を確認する必要があり、利用可能な場合、私は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();
上記は、基本的には次のん:私はBatchIdを取得することはできません
select * from cartItems
where productAvailability.quantity >= cartitems.quantity and
productAvailability.size = cartitems.size and
productAvailability.sku = cartitems.sku and
cartitems.userId = ? and
cartitems.status = ?
この方法です。私はJOIN FETCHTYPEを使用しようとしましたが、それでもskuのすべてのサイズのproductAvailabilityテーブルがロードされます。 cartItemsごとにcartItemsと対応するBatchIdの両方を取得する方法はありますか?
私は反復を避けたいと思っていました。しかし、反復以外のオプションはないようです –