У меня есть простой репозиторий, который помечен @Transactional
. И для реализации ORM я использую SQL2O.
У меня очень специфические запросы, в одном методе я делаю в trasaction DELETE
, затем UPDATE
, а затем commit()
после получения всех данных обратно с помощью запроса SELECT
. Таким образом, проблема в некоторых случаях возвращает неправильные значения результата. Под этим я подразумеваю, что последние вставленные данные не имеют значения результата, поскольку они еще не были зафиксированы.
Пример метода в классе репозитория:
@Transactional
@Repository
@Slf4j
public class WishListRepositoryImpl implements WishListRepository {
@Autowired
private Sql2o sql2o;
@Override
public LinkedHashSet<String> deleteThenUpdateAndReturnFavorites(final String delete, final String update,
final String crmId) {
try (Connection connection = sql2o.beginTransaction()) {
connection.createQuery(DELETE_FAVORITES_QUERY)
.addParameter(MATERIALS_JSON, delete)
.addParameter(CRM_ID, crmId)
.executeUpdate();
connection.createQuery(ADD_NEW_FAVORITES_QUERY)
.addParameter(MATERIALS_JSON, update)
.addParameter(CRM_ID, crmId)
.executeUpdate();
connection.commit();
return new LinkedHashSet<>(connection.createQuery(FIND_ALL_CLIENT_FAVORITES_QUERY)
.addParameter(CRM_ID, crmId)
.executeAndFetch(String.class));
}
}
Мне нужно, чтобы значение результата было после успеха commit()
в одной транзакции.