GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

JPA 2.1 Stored Procedure retornar um cursor

java
spring
Tags: #<Tag:0x00007f9723855e28> #<Tag:0x00007f9723855c98>

#1

Prezados venho tentando acertar um código que se não fosse a questão de retornar um cursor seria fácil visto que já executo procedimentos (funções ) usando JPA 2.1

Meu caso tenho que chamar uma função no Postgre que retorna um cursor, o projeto com Spring Boot tem retornado o erro
o.h.engine.jdbc.spi.SqlExceptionHelper : ERRO: cursor “<unnamed portal 1>” não existe

o código segue abaixo

@PersistenceContext
private EntityManager em;
	
@Override
public List<Sequencia> getSequenceSPU(String nome) {
	try{					
	  	   StoredProcedureQuery query = 
		          em
		            .createStoredProcedureQuery("spu_gerasequencia", Sequencia.class)
		            .registerStoredProcedureParameter(1, void.class, ParameterMode.REF_CURSOR)
		            .registerStoredProcedureParameter(2, String.class, ParameterMode.IN)
		            .setParameter(2, nome);			        		   
	   		   				   
	   List<Sequencia> results = (List<Sequencia>) query.getResultList();
	   
	   return results;
	   
	} catch (Exception e){
		e.printStackTrace();
		return null;
	}

Código aparentemente simples , eu acredito que a mensagem de erro refere-se ao cursor ( que como eu não dei um nome a ele o banco o chamou de <unnamed portal 1> ) não existir ou seja se ele não exista talvez seja algo a respeito do commit ( vi em alguns artigos ) e por isto no arquivo de propriedades do spring eu coloquei
spring.datasource.username=postgres
spring.datasource.password=12345
spring.datasource.default-auto-commit=false
spring.datasource.auto-commit=false
spring.datasource.commit-on-return=false

Mais o problema persiste
se alguem já passou por isto e puder comentar agradeço