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