@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
мои классы реализации.