Efter att inte ha fått någon feedback i form av svar eller ens en kommentar gjorde jag mig redo att ge upp när jag snubblade in på detta utmärkta blogginlägg:
Hur man binder anpassade Hibernate-parametertyper till JPA-frågor
Inlägget ger två alternativ för att kontrollera vilka typer som JPA skickar genom drivrutinen till Postgres (eller vad den underliggande databasen faktiskt är). Jag använde metoden med TypedParameterValue
. Så här ser min kod ut och fortsätter med exemplet ovan:
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();
Naturligtvis är det trivialt att skicka null
för varje parametern i frågan, men jag gör detta främst för att visa syntaxen för texten och dubbla kolumner. I praktiken skulle vi förvänta oss att åtminstone några av parametrarna inte är null
, men ovanstående syntax hanterar alla värden, null eller på annat sätt.