PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres-Bytefehler beim Binden von null an vorbereitete Anweisungen

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.