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

Binden Sie den Array-Parameter an die native Abfrage

Lassen Sie das array[...] weg aus Ihrem SQL:

WHERE CAST(:commoditySpecIds AS BIGINT[])

und übergeben Sie dann die Liste der IDs als Zeichenfolge, die wie folgt aussieht:

"{1,2,3,4}"

Der Standard toString() für Listen gibt normalerweise etwas zurück wie:"[1,2,3]" , also könnten Sie so etwas tun:

String literal = commoditySpecsIds.toString();
literal = "{" + literal.substring(1,literal.length() - 1) + "};

und übergeben Sie das dann an Ihre Verschleierungsschicht:

setParameter("commoditySpecIds", literal)