PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Erro de bytea do Postgres ao vincular nulo a instruções preparadas


Não tendo recebido nenhum feedback na forma de respostas ou mesmo um comentário, estava me preparando para desistir, quando me deparei com este excelente post no blog:

Como vincular tipos de parâmetros personalizados do Hibernate a consultas JPA

A postagem oferece duas opções para controlar os tipos que o JPA passa pelo driver para o Postgres (ou qualquer que seja o banco de dados subjacente). Eu fui com a abordagem usando TypedParameterValue . Aqui está a aparência do meu código continuando com o exemplo dado acima:
Query query = entityManager.createNativeQuery(sqlString, MyEntity.class);
query.setParameter("param1", new TypedParameterValue(StringType.INSTANCE, null));
query.setParameter("param2", new TypedParameterValue(DoubleType.INSTANCE, null));
List<MyEntity> = query.getResultList();

Claro, é trivial passar null para todos parâmetro na consulta, mas estou fazendo isso principalmente para mostrar a sintaxe do texto e das colunas duplas. Na prática, esperaríamos que pelo menos alguns dos parâmetros não fossem null , mas a sintaxe acima lida com todos os valores, nulos ou não.