Comment puis-je utiliser spring data jpa pour la requête jsonb de la colonne?

Je vais avoir un problème pour faire cette requête native droit contre une postgres 9.4 exemple.

Mon dépôt a une méthode:

 @Query(value = "SELECT t.* " +
            "FROM my_table t " +
            "WHERE t.field_1 = ?1 " +
            "AND t.field_2 = 1 " +
            "AND t.field_3 IN ?2 " +
            "AND t.jsonb_field #>> '{key,subkey}' = ?3",
            nativeQuery = true)
    List<Entity> getEntities(String field1Value,
                                   Collection<Integer> field3Values,
                                   String jsonbFieldValue);

Mais les journaux montrent ceci:

SELECT t.* FROM my_table t 
WHERE t.field_1 = ?1 
  AND t.field_2 = 1 
  AND t.field_3 IN ?2 
  AND t.jsonb_field ? '{key,subkey}' = ?3

Et je reçois cette exception:

Exception interne: org.postgresql.util.PSQLException: Aucune valeur
spécifié pour le paramètre 2.

J'ai enregistré les paramètres directement avant l'invocation de méthode, et ils sont tous fournis.

Je ne suis pas sûr pourquoi #>> montre ? dans le journal. Ai-je besoin pour échapper à #>>? Dois-je formater la collection pour IN? Ai-je besoin pour échapper à la json chemin?

Lorsque j'exécute la requête directement à l'encontre de la db, il fonctionne. Exemple:

SELECT *
FROM my_table t
WHERE t.field_1 = 'xxxx'
  AND t.field_2 = 1
  AND t.field_3 IN (13)
  AND t.jsonb_field #>> '{key,subkey}' = 'value'
  • avez-vous été en mesure de résoudre ce problème? Si c'est à partir de l'une des réponses pourrait vous en choisir un? Si non, pourriez-vous poster la solution que vous avez une réponse
  • on dirait qu'il ne fonctionne pas avec eclipselink. J'ai fini par aller un itinéraire différent.
InformationsquelleAutor Josh C. | 2017-05-10