Estoy usando la asignación de objeto/gráfico simple en Spring Data Neo4j 2.0, donde realizo operaciones de persistencia utilizando el marco de depósito de Spring Data. Estoy trabajando con los repositorios en lugar de trabajar con Neo4jTemplate. Inyecto los repositorios en mis controladores Spring Web MVC, y los controladores llaman directamente al repositorio. (Sin capa de servicio intermedio: mis operaciones son generalmente CRUD y consultas de buscador.)¿Manera correcta de realizar transacciones utilizando la asignación de objeto/gráfico simple de Spring Data Neo4j?
Cuando leo operaciones, no hay problemas. Pero cuando escribo operaciones, obtengo "NotInTransactionException". Según tengo entendido, las operaciones de lectura en Neo4j no requieren transacciones, pero sí operaciones de escritura.
¿Cuál es la mejor manera de hacer transacciones aquí, suponiendo que quiero seguir con el OGM simple? Quiero usar @Transactional, pero poner eso en las diversas interfaces de repositorio no funciona. Si presento un nivel de servicio intermedio entre los controladores y los repositorios y luego anoto los beans de servicio con @Transactional, entonces funciona, pero me pregunto si existe una forma más sencilla de hacerlo. Sin Spring Data, normalmente tendría acceso a las implementaciones de DAO (repositorio), así podría anotar los DAO concretos con @Transactional si quería evitar un nivel de servicio de paso a través. Con Spring Data, los repos se generan dinámicamente, por lo que no parece ser una opción.
@Transactional en la Repository-Interfaces debería funcionar. –