Vous pouvez appeler une procédure stockée à l'aide de javax.persistence.StoredProcedureQuery. Vous n'avez même pas besoin de déclarer quoi que ce soit sur votre entité.
Je suggérerais de déplacer la logique d'appel de procédure vers un service, puis d'appeler la méthode de service depuis votre contrôleur.
Par exemple :
@Service
public class LoginServiceImpl implements LoginService {
@PersistenceContext
private EntityManager entityManager;
public Boolean checkUsernameAndPassword(String username, String password) {
//"login" this is the name of your procedure
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("login");
//Declare the parameters in the same order
query.registerStoredProcedureParameter(1, String.class, ParameterMode.IN);
query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
query.registerStoredProcedureParameter(3, Integer.class, ParameterMode.OUT);
query.registerStoredProcedureParameter(4, String.class, ParameterMode.OUT);
//Pass the parameter values
query.setParameter(1, username);
query.setParameter(2, password);
//Execute query
query.execute();
//Get output parameters
Integer outCode = (Integer) query.getOutputParameterValue(3);
String outMessage = (String) query.getOutputParameterValue(4);
return true; //enter your condition
}
}
Et ensuite, vous pouvez appeler cette méthode depuis votre Controller, après avoir injecté votre LoginService
.