我有一个函数应该循环遍历OrderItems列表并更新数据库中每个相应InventoryItem的数量,但它不起作用。没有错误,但库存项目数量不会被更新。
public void completeOrder(Users user, Orders order)
{
List<OrderItem> orderItems = getOrderItems(user, order);
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Assignment2PU");
EntityManager em = emf.createEntityManager();
for (OrderItem item : orderItems)
{
em.getTransaction().begin();
InventoryItem invItem = item.getInventoryItem();
System.out.println("decreasing " + invItem.getItemName() + ": " + invItem.getItemQty() + " by " + item.getQty());
int newQty = invItem.getItemQty() - item.getQty();
invItem.setItemQty(newQty);
em.getTransaction().commit();
}
}
我理解它的方式,em.getTransaction().begin();
打开事务,我做了一些更改,然后em.getTransaction().commit();
会将这些更改保存到数据库中。这是不正确的吗?
答案 0 :(得分:0)
它缺少em.merge()来通知实体管理器您要保留更改