Stai usando il contenitore per gestire la persistenza. Utilizzando la transazione RICHIESTA, JPA avvierà una nuova transazione per ogni chiamata al database. Pertanto non è necessario avviare o eseguire il commit di una transazione all'interno della stored procedure. In effetti, è una cattiva idea.
Non menzioni se avvii una nuova transazione nella procedura memorizzata, solo che hai un commit lì. Se non avvii una (nuova) transazione, quel commit causerà problemi. Anche se lo fai, non è necessario, questo è il tipo di cose con cui utilizziamo JPA per cominciare.