es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

@NamedStoredProcedureQuery no está funcionando para la llamada simple de procedimiento en JPA Java.

Estoy recibiendo un error: Intento de establecer un nombre de parámetro que no aparece en el SQL: i_reorg_id. No tiene sentido para mí ya que hay un ireorgid en el SQL.

El procedimiento es:

create or replace PROCEDURE PRINTREORGID(i_reorg_id IN VARCHAR2, o_reorg_id OUT VARCHAR2)
AS BEGIN
SELECT reorg_id
INTO o_reorg_id
FROM reorg_automation_workflowinput
WHERE reorg_id = i_reorg_id;
END;

La entidad es:

@Entity
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(name = "fetchProcedure", procedureName = "PRINTREORGID", parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, type = String.class, name = "i_reorg_id"),
@StoredProcedureParameter(type = String.class, mode = ParameterMode.OUT, name = "o_reorg_id"),
})
})

Y el repositorio es:

@Procedure(name = "fetchProcedure", procedureName="PRINTREORGID")
String reorgAutomationWorkFlow(@Param("i_reorg_id") String i_reorg_id);

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el parámetro “i_reorg_id” no es reconocido en la consulta SQL, a pesar de estar presente en el código del procedimiento.

    Al examinar el código, parece que el problema puede ser causado por un error de ortografía en la clase de entidad. Específicamente, el nombre del parámetro en la anotación @NamedStoredProcedureQuery está mal escrito como “i_reog_id” en lugar de “i_reorg_id”. Esto significa que el nombre del parámetro definido no coincide con el nombre del parámetro real utilizado en la base de datos.

    Para resolver el error, el nombre del parámetro en la anotación debe corregirse para que coincida con el nombre del parámetro en el código del procedimiento almacenado:

    @Entity
    @NamedStoredProcedureQueries({
            @NamedStoredProcedureQuery(name = "fetchProcedure", procedureName = "PRINTREORGID", parameters = {
                    @StoredProcedureParameter(mode = ParameterMode.IN, type = String.class, name = "i_reorg_id"),
                    @StoredProcedureParameter(type = String.class, mode = ParameterMode.OUT, name = "o_reorg_id"), 
                    }) 
            })
    

    Una vez realizada esta modificación, la consulta debería poder reconocer y utilizar correctamente el parámetro “i_reorg_id” en el código SQL.

Comments are closed.