Fernando, eso sucede por que la funcion crear persona crea su propia
transaccion y la comitea. Lo ideal seria que desde java crearas la persona
y solo hicieras el session.create(), si estas empezando a hacer lógica de
negocio en funciones de postgresql, entonces creo que algo en tu modelo
está fallando.

Saludos


2013/3/20 Fernando Paz <f...@engineer.com>

> Holas,
> Me hallo en un problema, tengo una servicio escrito en java que utiliza
> DAOs (JPA) para hacer inserción de datos en la bdd postgresql
> Mi código es: en la primera parte del código hago un create de una pesona,
> en una segunda parte llamo a una función de postgresql y finalmente en una
> tercera parte hago un update del registro:
>
> // primera parte
> ...
> personaDao.create(persona);
> ...
> // segunda parte
> ...
> usuarioDao.createQuery("select  crearpersona (" + persona.getId() + ")");
> // llamada a funcion postgresq
> ...
> // tercera parte
> ...
> registroDao.update(registro); // AQUI FALLA!!!!!
> ...
>
> El porque falla no es el problema, el problema fue la transaccionalidad ya
> que al dispararse la excepción de java hizo rollback de la primera y
> tercera parte, pero la funcion de postgres que internamiente tiene su begin
> y end ya hizo commit de sus oporaciones internas.... la consecuencia esa
> que mi bdd quedo partida
>
> No se como afrontar este tema de transaccionalidad de la función asociada
> a la conexión que disparó su ejecución y que haga el rollback del caso
>
> Su ayuda por favor que me falta o hago mal
>
> Gracias
>



-- 
Lindolfo Iván Perales Mancinas
Solo existen 10 tipos de personas en el mundo, las que saben binario y las
que no.

Responder a