Я пытаюсь создать аннотацию @Transactional для MongoDb с помощью
класса перехватчика MethodInterceptor
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
ClientSession session = mongoClient.startSession();
Object result = null;
session.startTransaction();
try {
result = methodInvocation.proceed();
session.commitTransaction();
return result;
}catch (Exception exception){
commitWithRetry(methodInvocation, session);
return result;
}finally {
session.close();
}
}
И мой класс репозитория содержит следующее method
@MongoTransaction(retryCount = 3)
public Invoice create(Invoice invoice) {
invoice.setId(UUID.randomUUID().toString());
invoiceCollection.insertOne(session, invoice);
return invoice;
}
invoiceCollection.insertOne(session, invoice);
ожидает сеанс, который должен быть передан для работы транзакций
Я использую драйвер mongodb-driver-sync
pom. xml
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>3.12.2</version>
</dependency>