Da ich kein Feedback in Form von Antworten oder gar Kommentaren erhalten hatte, war ich kurz davor aufzugeben, als ich auf diesen hervorragenden Blog-Beitrag stolperte:
So binden Sie benutzerdefinierte Hibernate-Parametertypen an JPA-Abfragen
Der Beitrag bietet zwei Optionen zum Steuern der Typen, die JPA über den Treiber an Postgres weitergibt (oder was auch immer die zugrunde liegende Datenbank tatsächlich ist). Ich habe mich für den Ansatz mit TypedParameterValue
entschieden . So sieht mein Code aus, wenn ich mit dem oben angegebenen Beispiel fortfahre:
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();
Natürlich ist es trivial, null
zu übergeben für alle Parameter in der Abfrage, aber ich mache das hauptsächlich, um die Syntax für die Text- und Doppelspalten zu zeigen. In der Praxis würden wir erwarten, dass zumindest einige der Parameter nicht null
sind , aber die obige Syntax behandelt alle Werte, null oder andere.