Jump to content

Jotahemmy Silva

Membros
  • Contagem de Conteúdo

    2
  • Ingressou

  • Última visita

Postagens postado por Jotahemmy Silva

  1. 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
        
        
    ...
     

  2. 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$;
    --------------------------------------------------------
     

    DEPURACAO.txt

×
×
  • Create New...