Da jeg ikke havde modtaget nogen feedback i form af svar eller engang en kommentar, var jeg klar til at give op, da jeg faldt over dette fremragende blogindlæg:
Sådan binder du tilpassede Hibernate-parametertyper til JPA-forespørgsler
Indlægget giver to muligheder for at kontrollere de typer, som JPA sender gennem driveren til Postgres (eller hvad den underliggende database faktisk er). Jeg fulgte fremgangsmåden ved at bruge TypedParameterValue
. Her er, hvordan min kode ser ud, fortsætter med eksemplet ovenfor:
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();
Selvfølgelig er det trivielt at sende null
for hver parameter i forespørgslen, men jeg gør dette hovedsageligt for at vise syntaksen for teksten og dobbeltkolonner. I praksis ville vi forvente, at mindst et par af parametrene ikke er null
, men ovenstående syntaks håndterer alle værdier, null eller på anden måde.