Estoy utilizando la gestión de transacciones con Spring e Hibernate. Mi situación es la siguiente:
Tengo frijol Un que está rodeada de transacción y se llama frijol B que se define con la transacción que incluye el atributo 'PROPAGATION_REQUIRED'Problema de propagación de la transacción de primavera
B en este caso doesn' t abrir una transacción nueva pero usa la existente (ver en los registros: 'Participar en una transacción existente'). Sin embargo, en caso de que el método en B genere una excepción runtimeException, en su camino de regreso a A ensuciará la transacción y causará que se marque para retroceder, incluso si el método externo de A captará la excepción y no lo hará. tirar a la basura. Creo que este comportamiento es incorrecto, en este caso deseo que A controle la transacción y B no debe interrumpir la transacción en ningún caso.
¿Hay alguna manera de definir B para abrir la transacción si no se definió ninguna transacción pero NO HACER NADA si ya está dentro de una transacción existente y dejar que el nivel superior tome la decisión de confirmar o revertir?
Consulte más respuestas sobre este tema en un hilo en Spring community here.
Lo que está diciendo es que no hay una solución lista para usar. Todavía intentaré buscar una solución más genérica que requiera menos trabajo, antes marque esta respuesta como la mejor. – Spiderman
seguro, no hay necesidad de elegir la respuesta correcta dentro de una hora de la pregunta. Pero un voto positivo sería bueno :-) –
Para cerrar este caso, creo que ninguna solución se ajusta a mis solicitudes. Por lo tanto, este comportamiento por diseño de Spring me parece una limitación. La única solución real es anular la implementación de Spring como se sugiere aquí. – Spiderman