Al no haber recibido ningún comentario en forma de respuestas o incluso un comentario, estaba a punto de rendirme cuando me topé con esta excelente entrada de blog:
Cómo vincular tipos de parámetros personalizados de Hibernate a consultas JPA
La publicación ofrece dos opciones para controlar los tipos que JPA pasa a través del controlador a Postgres (o cualquiera que sea la base de datos subyacente). Seguí el enfoque usando TypedParameterValue
. Así es como se ve mi código continuando con el ejemplo anterior:
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();
Por supuesto, es trivial pasar null
para cada parámetro en la consulta, pero estoy haciendo esto principalmente para mostrar la sintaxis del texto y las columnas dobles. En la práctica, esperaríamos que al menos algunos de los parámetros no sean null
, pero la sintaxis anterior maneja todos los valores, nulos o no.