Hibernate Transaction Timeout Exception
Esta excepción es lanzada cuando una operación a la base de datos a sobrepasado el tiempo de vida de el hilo donde corre nuestra transacción, es posible que necesitemos cambiar el tiempo de vida de nuestro hilo para dejar que termine el proceso.
Solución #1
Es posible modificar este parámetro desde el archivo de configuración de hibernate de forma global, pero que tal si solo queremos modificarlo para una transacción muy bien identificada,también es posible pero hay que modificarlo desde el código al abrir nuestra transacción de esta forma :
@Inject private UserTransaction utx;
...
utx.setTransactionTimeout(2000);//Tiempo en milisegundos
utx.begin();
...
utx.commit();
De esta forma nuestra transacción estará viva durante el tiempo que nosotros indiquemos, hay que recordar que siempre es mejor realizar transacciones pequeñas y rápidas a la base de datos.