使用Spring Data在执行期间更改了存储过程名称

时间:2017-01-25 15:14:06

标签: java spring oracle jpa spring-data

我需要在我的存储库中使用Spring注释@Procedure来调用Oracle存储过程,如下所示:

    @Procedure(name = "SECURITE.P_MAJ_DROITFAM")
    public void updateDroitFamille (@Param("v_id_fam") Long idFamille,@Param("v_action_type") Integer cas,@Param("v_user") String userName);

错误日志

  

Hibernate:{call updateDroitFamille (?,?,?)} 15:46:39,946 - ERROR - SqlExceptionHelper.logExceptions:146 - ORA-06550:第1行,   第7栏:PLS-00201:标识符' UPDATEDROITFAMILLE'一定是   声明

但是程序名称 P_MAJ_DROITFAM 而不是 updateDroitFamille
问题是程序名称在执行期间已被更改!!?任何想法?

1 个答案:

答案 0 :(得分:2)

您需要做的是在您的某个实体上添加其他配置,首先在应用程序中声明您的过程定义:

@NamedStoredProcedureQuery(name = "P_MAJ_DROITFAM", procedureName = "SECURITE.P_MAJ_DROITFAM", parameters = {
        @StoredProcedureParameter(mode = ParameterMode.IN, name = "v_id_fam", type = Long.class),
        @StoredProcedureParameter(mode = ParameterMode.IN, name = ""v_action_type", type = Integer.class) },
        @StoredProcedureParameter(mode = ParameterMode.IN, name = ""v_user", type = Integer.class) })
public class MyEntity{

然后在存储库中,您可以调用:

@Procedure(name = "P_MAJ_DROITFAM")
    public void updateDroitFamille (@Param("v_id_fam") Long idFamille,@Param("v_action_type") Integer cas,@Param("v_user") String userName);

您可以保留方法的名称。