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.