-
Contagem de Conteúdo
2 -
Ingressou
-
Última visita
Tipo de Conteúdo
Perfis
Fóruns
Blogs
Calendário
Downloads
Postagens postado por Jotahemmy Silva
-
-
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$;
--------------------------------------------------------
Erro ao chamar Stored Procedure, uso spring boot e JPA; Sou iniciante no Java e estou penando muito, alguém pode me ajudar com essa bronca.
em 🤔❓ Dúvidas de Desenvolvimento
Postado
Olá nosso amigo, foram feitas as alterações, porém continua com erro:
ERROR: public.spesp01() is a procedure
Dica: To call a procedure, use CALL.
NO Repository
----------------
@Procedure("public.spesp01")
void spesp01();
No Service
----------------
public void executaProcedure(){
especialidadeRepository.spesp01();
}
No Controller
----------------
@PostMapping("/exeProcedure")
public void exeProcedure(){
especialidadeService.executaProcedure();
}
erro
----------------
...
2022-05-09 02:25:42.396 INFO 10492 --- [ restartedMain] c.c.s.SyscoopmedrnapiApplication : Started SyscoopmedrnapiApplication in 5.252 seconds (JVM running for 5.67)
2022-05-09 02:25:47.966 INFO 10492 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-05-09 02:25:47.966 INFO 10492 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-05-09 02:25:47.967 INFO 10492 --- [nio-8080-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
Hibernate: {call public.spesp01()}
2022-05-09 02:25:48.043 WARN 10492 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42809
2022-05-09 02:25:48.046 ERROR 10492 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper :
ERROR: public.spesp01() is a procedure
Dica: To call a procedure, use CALL.
Posição: 15
2022-05-09 02:25:48.062 ERROR 10492 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: Error calling CallableStatement.getMoreResults; SQL [public.spesp01]; nested exception is org.hibernate.exception.SQLGrammarException: Error calling CallableStatement.getMoreResults] with root cause
org.postgresql.util.PSQLException: ERROR: public.spesp01() is a procedure
Dica: To call a procedure, use CALL.
Posição: 15
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2552) ~[postgresql-42.2.23.jar:42.2.23]
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2284) ~[postgresql-42.2.23.jar:42.2.23]
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:322) ~[postgresql-42.2.23.jar:42.2.23]
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:481) ~[postgresql-42.2.23.jar:42.2.23]
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:401) ~[postgresql-42.2.23.jar:42.2.23]
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:164) ~[postgresql-42.2.23.jar:42.2.23]
at org.postgresql.jdbc.PgCallableStatement.executeWithFlags(PgCallableStatement.java:83) ~[postgresql-42.2.23.jar:42.2.23]
at org.postgresql.jdbc.PgPreparedStatement.execute(PgPreparedStatement.java:153) ~[postgresql-42.2.23.jar:42.2.23]
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44) ~[HikariCP-4.0.3.jar:na]
at com.zaxxer.hikari.pool.HikariProxyCallableStatement.execute(HikariProxyCallableStatement.java) ~[HikariCP-4.0.3.jar:na]
at org.hibernate.result.internal.OutputsImpl.<init>(OutputsImpl.java:56) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernat
...