Этот код работает для меня для сохранения объектов BilledProduct в объекте Bill:
@OneToMany (mappedBy="bill", cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@HiddenField
@Getter
@Setter
@EqualsAndHashCode.Exclude
private Set<BilledProduct> items;
Customer customer = customerService.findByCustomerNumber("000001");
Bill bill = new Bill(customer, sequenceService.findNextBillNumberForCustomer(customer));
HashSet items = new HashSet();
Product product = productService.findByProductNumber("000001");
BilledProduct item = new BilledProduct(bill, 2, product, product.getSellPrice());
items.add(item);
product = productService.findByProductNumber("000002");
item = new BilledProduct(bill, 4, product, product.getSellPrice());
items.add(item);
bill.setItems(items);
billService.save(bill);
Я могу обновить сущность Bill без проблем.Попробуйте CascadeType.ALL и orphanRemoval = true, возможно, это как-то связано с этим.