sql >> Base de Datos >  >> RDS >> Mysql

Cómo llamar a un procedimiento almacenado desde Hibernate que tiene parámetros IN y OUT

Teniendo en cuenta que tiene un procedimiento almacenado simple que genera un tipo básico:

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

Puede llamar a este procedimiento almacenado usando 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");