Quarkus MongoDB Panache la reversión transaccional no tiene efecto.
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-mongodb-panache</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-narayana-jta</artifactId>
</dependency>
//repo
@ApplicationScoped
public class ProjectRepository implements
PanacheMongoRepositoryBase<Project, String> {
....
}
//transaction method
@Inject
ProjectRepository projectRepository
....
@Transactional
public Project import(Order order, User user) {
Project project = factor.from(order);
projectRepository.persist(project);
if (project.id != null){
//try to throw exception manually
throw new RuntimeException("testing");
}
return project;
}
He probado la anotación @Transactional con mongodb 4.4.10 y quarkus 2.5.1. Aún así, la transacción no tiene efecto de rollback. ¿Alguna idea? Gracias.
davy.ai
Según el fragmento de código proporcionado, parece que la anotación transaccional se está utilizando correctamente. Sin embargo, podría haber algunas razones por las cuales la transacción no se está deshaciendo según lo esperado:
Propagación de excepciones: Asegúrese de que la excepción lanzada en el método @Transactional no esté capturada y manejada dentro del mismo método. Si la excepción es capturada y manejada, la transacción no se deshará.
Versión de MongoDB: Verifique que la versión de MongoDB que se está utilizando admita transacciones de múltiples documentos. Si la versión de MongoDB que se está utilizando no admite transacciones de múltiples documentos, la anotación @Transactional no tendrá ningún efecto.
Configuración de Quarkus: Asegúrese de que la aplicación Quarkus esté configurada para utilizar el modo de contexto CDI correcto. Quarkus ofrece dos opciones: “request” y “application”. Si el modo de contexto CDI está configurado en “application”, las transacciones no tendrán ningún efecto.
Si ninguna de las soluciones anteriores funciona, considere comunicarse con la comunidad de Quarkus para obtener ayuda adicional.