Vous utilisez le conteneur pour gérer la persistance. En utilisant la transaction REQUIRED, JPA démarrera une nouvelle transaction pour chaque appel à la base de données. Par conséquent, il n'est pas nécessaire de démarrer ou de valider une transaction dans la procédure stockée. En fait, c'est une mauvaise idée.
Vous ne mentionnez pas si vous démarrez une nouvelle transaction dans la procédure stockée, juste que vous avez un commit là-dedans. Si vous ne démarrez pas une (nouvelle) transaction, cette validation causera des problèmes. Même si vous le faites, ce n'est pas nécessaire, c'est le genre de choses pour lesquelles nous utilisons JPA pour commencer.