El problema es que al realizar el bucle for los dos objetos que se enviaron a guardar previamente y que están dentro de la transacción se hacen commit y se los puede ver en la base incluso antes de terminar el método (DEBUG). He realizado varias pruebas entre esas probar con otras entidades realizando la consulta y actualizando la entidad que me retorna dentro del for tratando de descartar que sea por el mapeo o por el tema de BDD y el problema persiste. Al inicio pensé que el problema era por la tabla, el mapeo, etc. Pero en realidad es cuando se realiza la acción descrita dentro de un bucle.
Ademas que si por algún motivo existiera un error dentro del bucle o posterior a este, como se realizo el commit esos datos se quedan inconsistente.
Investigando encontre que una solución para este problema es la de consultar previamente la lista y pasarla antes de iniciar la transacción. La probe y funciona pero para mi caso no es viable ya que el proceso en realidad es mucho mas complicado que el que les describo con fines de simplicidad.
Les agredezco mucho me pudieran ayudar con este tema...
Hola amigos, les comento que actualmente me encuentro con un problema que les comento a continuación esperando su ayuda.
tengo el siguiente método configurado para utilizar transacciones de spring desde la capa de negocio.
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void guardarProceso(List lista, Object objeto1,Object objeto2){
guardar(objeto1);
guardar(objeto2);
Kardex kardex = null;
for(Object entidad; lista){
kardex = find(entidad);
actualizar(kardex);
}
}
El problema es que al realizar el bucle for los dos objetos que se enviaron a guardar previamente y que están dentro de la transacción se hacen commit y se los puede ver en la base incluso antes de terminar el método (DEBUG). He realizado varias pruebas entre esas probar con otras entidades realizando la consulta y actualizando la entidad que me retorna dentro del for tratando de descartar que sea por el mapeo o por el tema de BDD y el problema persiste. Al inicio pensé que el problema era por la tabla, el mapeo, etc. Pero en realidad es cuando se realiza la acción descrita dentro de un bucle.
Ademas que si por algún motivo existiera un error dentro del bucle o posterior a este, como se realizo el commit esos datos se quedan inconsistente.
Investigando encontre que una solución para este problema es la de consultar previamente la lista y pasarla antes de iniciar la transacción. La probe y funciona pero para mi caso no es viable ya que el proceso en realidad es mucho mas complicado que el que les describo con fines de simplicidad.
Les agredezco mucho me pudieran ayudar con este tema...