如何使用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;
}