Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment appeler une procédure stockée depuis Hibernate ayant à la fois des paramètres IN et OUT

Considérant que vous avez une procédure stockée simple qui génère un type de base :

CREATE PROCEDURE count_comments (
   IN postId INT, 
   OUT commentCount INT
) 
BEGIN
    SELECT COUNT(*) INTO commentCount 
    FROM post_comment  
    WHERE post_comment.post_id = postId; 
END

Vous pouvez appeler cette procédure stockée en utilisant un JPA StoredProcedureQuery :

StoredProcedureQuery query = entityManager
    .createStoredProcedureQuery("count_comments")
    .registerStoredProcedureParameter(
        "postId", Long.class, ParameterMode.IN)
    .registerStoredProcedureParameter(
        "commentCount", Long.class, ParameterMode.OUT)
    .setParameter("postId", 1L);
 
query.execute();
 
Long commentCount = (Long) query
    .getOutputParameterValue("commentCount");