Код: Выделить всё
public void processPositions(){
for(Position position : shortPositions){
try{
for(Trade trade : borrowTrades){
for(TradeEvent event : futureEvents){
cancelEvent(event);
} // end for event
closeTrade(trade);
} // end for trade
}catch(){
// handle exception here
}
} // end for position
}
Как я могу это достичь? Без смягчения я бы открыл новую транзакцию, когда беру следующий объект позиции в цикле. Я бы обновил/вставил/удалил соответствующие объекты, которые связаны с моим объектом положения с использованием SQL, и, в конце концов, я бы совершил все или отказ. Затем я бы открыл новую транзакцию при взятии следующего объекта.
Однако Hibernate скрывает это от пользователя. Я полагаю, что призыв к процессовым сложениям выполняется в рамках сеанса, имеющей транзакцию. И если эта транзакция откатится, она используется. Мой вопрос: как я могу начать новую транзакцию и заставить всех объектов субъекта в репозиториях использовать эту новую транзакцию, когда обновляется постоянный объект.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -a-for-loo