Мы работаем над проектом с Spring Boot 2, Kotlin и neo4j server в качестве нашего хранилища данных. Я просто играл с аннотацией Spring @Transactional. После довольно продолжительного исследования Интернета я обнаружил, что нет поддержки транзакций Spring с сервером Neo4j (Rest API), он поддерживает только встроенный Neo4j.spring-boot-starter-data-neo4j, используемый для настройки neo4j
Мой код выглядит следующим образом
class ServiceImpl{
@Throws(Throwable::class)
@Transactional(rollbackFor = [Exception::class])
public void create() {
// Code for saving entity
throw Exception("Failed to save") // Throwing exception intentionally to check rollback
}
}
Сохраненная сущность не откатывается даже после возникновения исключения. Тот же код работает нормально, если база данных выбрана в POSTGRES. Однако это не работает с сервером Neo4j, если вы используете rest api для neo4j. Интернет говорит, что поддержка только для встроенного neo4j. Есть ли другой способ эффективной обработки транзакций. Я знаю, что есть программное управление транзакциями Springs, но это был бы утомительный подход.
Любые предложения по этому вопросу будут очень полезны. Заранее спасибо