Добрый день!
Суть проблемы заключается в следующем.
Для примера возьмем стандартные классы Customer и Order. У Order связь с Customer- композиция много-к-одному. У Order есть атрибут “Item”. При добавлении к кастомеру нового Order, мы попадаем на экран выбора Itemов и при выборе должна создаваться сущность Order с выбранным Item и привязанным к Cutomer. Нужно сделать так, чтобы при создании нового Customerа можно было сразу создать для него один или несколько Orderов. Сейчас попытался реализовать это следующим образом:
Кнопка добавления заказа на экране редактирования Customer:
public void onAddOrderClick() {
ItemsForOrder screen = screenBuilders.screen(this)
.withLaunchMode(OpenMode.THIS_TAB)
.withScreenClass(ItemsForOrder.class)
.withAfterCloseListener(e -> {
ordersDl.load();
ordersTable.refresh();
customerDl.load();
}
)
.build();
screen.setCustomer(getEditedEntity());
screen.show();
}
Действия при выборе конкретного Item на экране выбора Itemов:
public void onSelectButtonClick() {
Order order = metadata.create(Order.class);
order.setItem(groupTable.getSingleSelected());
order.setCustomer(customer); //передается методом setCustomer из предыдущего экрана
dataManager.commit(order);
super.closeWithDefaultAction();
}
К сожалению это не работает, если создается новый экземпляр сущности Cutomer, вылетает ошибка “During synchronization a new object was found through a relationship that was not marked cascade PERSIST”. Кроме того хотелось бы коммитить Customer и Order одновременно при нажатии на кнопку сохранить на экране редактирования Customerа. Каким образом это можно сделать?