2017-01-25 2 views
3

Ich brauche eine Oracle gespeicherte Prozedur aufzurufen Frühling Anmerkung mit @Procedure in meinem Repository wie folgt:Stored Procedure Name geändert während der Ausführung mit Spring Data

@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); 

Fehlerprotokoll:

Hibernate : {Anruf updateDroitFamille (?,?,?)} 15: 46: 39,946 - FEHLER - SqlExceptionHelper.logExceptions: 146 - ORA-06550: Zeile 1, Spalte 7: PLS-00201: Die Kennung 'UPDATEDROITFAMILLE' muss deklariert sein

aber Prozedurname ist P_MAJ_DROITFAM und nicht updateDroitFamille
Das Problem ist, dass die Prozedur Name während der Ausführung geändert wurde !! ? irgendeine Idee ?

Antwort

2

Was Sie tun müssen, ist eine zusätzliche Konfiguration auf einer Ihrer Einheiten stellen die Definition der Prozedur deklarieren zuerst in der Anwendung:

@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{ 

dann im Repository würden Sie nennen wie:

@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); 

Sie können den Namen der Methode beibehalten.

+1

Danke. Es klappt –