@Transactional и Spring Data

Насколько я понимаю, так это то, что при использовании аннотации @Transactional любой сбой приведет к откату операции до ее предыдущего состояния. У меня есть этот метод, который добавляет Items в цитату, используя интерфейс Spring PagingAndSortingRepository.

@Override
        public Quotation createNewQuotation(PurchaseRequest purchaseRequest, Supplier supplier) {
        Quotation quotation = new Quotation();
        Date now = new Date(Calendar.getInstance().getTimeInMillis());
        quotation.setQuotationDate(now);
        quotation.setPurchaseRequest(purchaseRequest);
        quotation.setSupplier(supplier);
        quotationRepository.save(quotation);
        return quotation;

    }

Когда я помещаю аннотацию @Transactional на весь класс и вручную проверяю, будет ли операция откатываться (без выбора какого-либо поставщика), другие свойства, такие как quotationDate, PurchaseRequest, все еще сохраняются в базе данных.

У меня такое ощущение, что я не использую аннотацию @Transactional. В чем может быть проблема и что я могу сделать, чтобы это исправить?

1 ответ

Решение

Спасибо за ответы.

Я сделал эту работу, добавив @EnableTransactionManagement на моем основном классе. Я решил

Bean-компонент purchaseRequestServiceImpl не может быть внедрен как com.eprocurement.service.PurchaseRequestServiceImpl, поскольку это динамический прокси-сервер JDK, который реализует: com.eprocurement.service.PurchaseRequestService Действие: рассмотрим внедрение бина в качестве одного из его интерфейсов или использование прокси на основе CGLib путем установки proxyTargetClass=true для @EnableAsync и / или @EnableCaching.

поместив @Transactional аннотации на мои сервисные интерфейсы и @autowiring это вместо @autowiring мои классы реализации.

Другие вопросы по тегам