Non avendo ricevuto alcun feedback sotto forma di risposte e nemmeno un commento, mi stavo preparando a rinunciare, quando mi sono imbattuto in questo eccellente post sul blog:
Come associare tipi di parametri Hibernate personalizzati alle query JPA
Il post offre due opzioni per controllare i tipi che JPA passa attraverso il driver a Postgres (o qualunque sia effettivamente il database sottostante). Ho seguito l'approccio utilizzando TypedParameterValue
. Ecco come appare il mio codice continuando con l'esempio sopra riportato:
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();
Ovviamente è banale passare null
per ogni parametro nella query, ma lo sto facendo principalmente per mostrare la sintassi per il testo e le doppie colonne. In pratica, ci aspetteremmo che almeno alcuni parametri non siano null
, ma la sintassi precedente gestisce tutti i valori, null o meno.