D𝔇
Size: a a a
D𝔇
ДК
AK
AE
AE
AE
AE
AE
EA
EA
EA
EA
_log.accept("Before start transaction");
try (var transaction = persistence.createTransaction()) {
var em = persistence.getEntityManager();
order.getItems().forEach(this::updateOrderItem);
_log.accept("After update order items -> store items -> count");
var invalid = order.getItems().stream()
.anyMatch((orderItem) -> orderItem.getCount() > orderItem.getStoreItem().getCount());
if (invalid) {
result = new Response<>(order, Response.Status.CONFLICT);
} else {
order.getItems().forEach(this::subtractStoreItemsCount);
_log.accept("After subtract store items count's / Before commit");
transaction.commit();
result = new Response<>(order, Response.Status.OK);
}
}private void updateOrderItem(OrderItem orderItem) {
var em = persistence.getEntityManager();
var storeItem = orderItem.getStoreItem();
var query = em.createQuery("select e.count from practice_StoreItem e where e.id = :id");
query.setParameter("id", storeItem.getId());
storeItem.setCount((Integer) query.getSingleResult());
}
private void subtractStoreItemsCount(OrderItem orderItem) {
var storeItem = orderItem.getStoreItem();
storeItem.setCount(storeItem.getCount() - orderItem.getCount());
}Before start transaction:
com.company.practice.entity.Order-7cf2d5e4-0a0b-73b6-93e1-5963a0a785bd [new]
com.company.practice.entity.OrderItem-482c6a01-3f6e-00f8-56ea-5f528ca5189d [new]
com.company.practice.entity.StoreItem-31966be6-34cc-0700-aa92-5425a621c5ea [detached]
After update order items -> store items -> count:
com.company.practice.entity.Order-7cf2d5e4-0a0b-73b6-93e1-5963a0a785bd [new]
com.company.practice.entity.OrderItem-482c6a01-3f6e-00f8-56ea-5f528ca5189d [new]
com.company.practice.entity.StoreItem-31966be6-34cc-0700-aa92-5425a621c5ea [detached]
After subtract store items count's / Before commit:
com.company.practice.entity.Order-7cf2d5e4-0a0b-73b6-93e1-5963a0a785bd [new]
com.company.practice.entity.OrderItem-482c6a01-3f6e-00f8-56ea-5f528ca5189d [new]
com.company.practice.entity.StoreItem-31966be6-34cc-0700-aa92-5425a621c5ea [detached]
EA
EA
EA
С
EA
E
VT