如何使用Hibernate确定购物车中是否有商品?

如何使用Hibernate确定购物车中是否有商品?,hibernate,hibernate-mapping,Hibernate,Hibernate Mapping,我有一个功能来验证购物车中是否存在商品。我当前的代码是这样工作的,如果代码返回异常,则表示购物车中不存在该项目 问题是,如果当前代码返回任何类型的异常,我将其视为列表中不存在的项 如果商品不在购物车中,如何更改代码 Criteria cre = session.createCriteria(Cart.class, "cart") .createAlias("cart.items", "items")

我有一个功能来验证购物车中是否存在商品。我当前的代码是这样工作的,如果代码返回异常,则表示购物车中不存在该项目

问题是,如果当前代码返回任何类型的异常,我将其视为列表中不存在的项

如果商品不在购物车中,如何更改代码

  Criteria cre = session.createCriteria(Cart.class, "cart")
                        .createAlias("cart.items", "items")
                        .createAlias("items.pro", "pro");
                cre.add(Restrictions.eq("cart.id", cartId));
                cre.add(Restrictions.eq("pro.id", proId));
                Cart cart = (Cart) cre.list().get(0);
                if (!tx.wasCommitted()) {
                    tx.commit();
                }
                if (session.isOpen()) {
                    session.close();
                }
                if (cart.getItems().size() >= 1) {
                    System.err.println("Item is in the cart");
                    return 1;
                }
            } catch (Exception e) {
                System.err.println("either item is not in the cart or an exception was thrown");
                return 2;     
            }

这是错误的,因为如果商品不在购物车中,代码会抛出一个异常,该异常将被catch块捕获,因此返回3。
    Criteria cre = session.createCriteria(Cart.class, "cart")
        .createAlias("cart.items", "items")
        .createAlias("items.pro", "pro");
        cre.add(Restrictions.eq("cart.id", cartId));
        cre.add(Restrictions.eq("pro.id", proId));
    List<Cart> carts = cre.list();
    if (carts.size() == 0)
        return 2; //ItemReteieveStatus.NOT_FOUND;

    Cart cart = carts.get(0);
    if (!tx.wasCommitted()) {
        tx.commit();
    }
    if (session.isOpen()) {
        session.close();
    }
    if (cart.getItems().size() >= 1) {
        System.err.println("Item is in the cart");
        return 1;//ItemReteieveStatus.FOUND;
    }
    return 2;//ItemReteieveStatus.NOT_FOUND
} catch (Exception e) {
    System.err.println("either item is not in the cart or an exception was thrown");
    return 3;//ItemReteieveStatus.ERROR;     
}
public enum ItemReteieveStatus {
    FOUND, NOT_FOUNT, ERROR;
}