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.