MODEL -----------------------------------------
package com.procedures.pjProcedure.model;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
@Getter
@Setter
@Entity
@Table(name="tb_especialidades")
public class Especialidade {
@Id
@Column(name="esp_codigo")
private Long codigo;
@Column(name="esp_descricao")
private String descricao;
@Column(name="esp_nome_reduzido")
private String nomeReduzido;
}
REPOSITORY---------------------------------------------
package com.procedures.pjProcedure.repository;
import com.procedures.pjProcedure.model.Especialidade;
import org.springframework.data.jpa.repository.JpaRepository;
public interface EspecialidadeRepository extends JpaRepository<Especialidade, Long> {
}
SERVICE--------------------------------------
package com.procedures.pjProcedure.service;
import com.procedures.pjProcedure.repository.EspecialidadeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.object.StoredProcedure;
import org.springframework.stereotype.Service;
import javax.persistence.Entity;
import javax.persistence.EntityManager;
import javax.persistence.StoredProcedureQuery;
@Service
public class EspecialidadeService {
@Autowired
private EspecialidadeRepository er;
public void executaProcedure(EntityManager em){
StoredProcedureQuery spq = em.createStoredProcedureQuery("spesp01");
spq.execute();
}
}
RESOURCE---------------------------------------------
package com.procedures.pjProcedure.resource;
import com.procedures.pjProcedure.model.Especialidade;
import com.procedures.pjProcedure.repository.EspecialidadeRepository;
import com.procedures.pjProcedure.service.EspecialidadeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import java.util.List;
@RestController
@RequestMapping("/especialidades")
public class EspecialidadeResource {
@Autowired
private EspecialidadeRepository er;
@Autowired
private EspecialidadeService es;
@GetMapping("/listar")
public List<Especialidade> Listar(){
return er.findAll();
}
@PostMapping("/exeProcedure")
public void exeProcedure(){
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("spesp01");
EntityManager em = emf.createEntityManager();
es.executaProcedure(em);
}
}
MINHA TABELA NO POSTGRESQL---------------------------
create sequence esp_id_seq
START WITH 1;
create table tb_especialidades (
esp_codigo bigint not null default nextval('esp_id_seq'),
esp_descricao varchar(100),
esp_nome_reduzido varchar(15),
primary key (esp_codigo)
);
MINHA STORED PROCEDURE SPESP01()----------------------
CREATE OR REPLACE PROCEDURE public.spesp01()
LANGUAGE 'plpgsql'
AS $BODY$
BEGIN
update tb_especialidades
set ESP_NOME_REDUZIDO='tst03'
WHERE ESP_CODIGO=3;
COMMIT;
END;
$BODY$;
--------------------------------------------------------