PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Erreur Postgres bytea lors de la liaison null aux instructions préparées

N'ayant reçu aucun retour sous forme de réponses ni même de commentaire, je m'apprêtais à abandonner, lorsque je suis tombé sur cet excellent article de blog :

Comment lier les types de paramètres Hibernate personnalisés aux requêtes JPA

La publication propose deux options pour contrôler les types que JPA transmet via le pilote à Postgres (ou quelle que soit la base de données sous-jacente). J'ai opté pour l'approche en utilisant TypedParameterValue . Voici à quoi ressemble mon code en continuant avec l'exemple ci-dessus :

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();

Bien sûr, il est trivial de passer null pour chaque paramètre dans la requête, mais je le fais principalement pour montrer la syntaxe du texte et des doubles colonnes. En pratique, on s'attendrait à ce qu'au moins quelques-uns des paramètres soient non null , mais la syntaxe ci-dessus gère toutes les valeurs, nulles ou non.