Я пытаюсь сохранить несколько записей в базе данных с помощью Hibernate. Я не открываю сеансы или не начинаю транзакции вручную, и я бы хотел избежать этого, если это возможно. Мой класс Service выглядит следующим образом:Hibernate - сохранение нескольких объектов за одну транзакцию
@Service
@Transactional
public class OrderServiceImpl implements OrderService {
@Autowired
private ProductRepository productRepository;
@Autowired
private OrderRepository orderRepository;
@Autowired
private CartService cartService;
@Autowired
private OrderDetailsRepository orderDetailsRepository;
...
public void saveOrder(Order order) {
Cart cart=order.getCart();
order.setTotalPrice(cart.getGrandTotal());
OrderDetails od = new OrderDetails();
od.setOrder(order);
for (Map.Entry<Integer, CartItem> entry : cart.getCartItems().entrySet())
{
Product product = entry.getValue().getProduct();
od.setProduct(product);
od.setQuantity(entry.getValue().getQuantity());
od.setUnitPrice(product.getUnitPrice());
orderDetailsRepository.save(od);
}
cartService.delete(order.getCart().getCartId());
}
...
}
Теперь, каждый раз, когда я бегу, кроме метода, я хотел бы сохранить одну запись в базе данных, однако в нынешнем состоянии он сохраняет только последний элемент (я предполагаю, что это совершает только сделки в конце) Выход Sql:
Hibernate:
insert
into
Orders
(CustomerID, OrderDate, ShippingDate, TotalPrice)
values
(?, ?, ?, ?)
Hibernate:
insert
into
OrderDetails
(OrderID, ProductID, Quantity, UnitPrice)
values
(?, ?, ?, ?)
Hibernate:
update
OrderDetails
set
OrderID=?,
ProductID=?,
Quantity=?,
UnitPrice=?
where
OrderDetailsID=?
My repository класс не делает ничего кроме того, вызывающий метод.
Возможно ли сохранить несколько записей в базе данных в Hibernate при использовании аннотации Transactional? Я хотел бы сохранить эту аннотацию в моем классе обслуживания.
Вау, я не знаю, какая разница, но это сработало, спасибо вам! :) –
Я отредактировал свой ответ, надеюсь, что он освещает тему :) –
Теперь все ясно, спасибо еще раз :) –