Deixe de fora o
array[...]
do seu SQL:WHERE CAST(:commoditySpecIds AS BIGINT[])
e, em seguida, passe a lista de IDs como uma string parecida com esta:
"{1,2,3,4}"
O padrão toString() para Listas geralmente retorna algo como:
"[1,2,3]"
, então você poderia fazer algo assim:String literal = commoditySpecsIds.toString();
literal = "{" + literal.substring(1,literal.length() - 1) + "};
e, em seguida, passe isso para sua camada de ofuscação:
setParameter("commoditySpecIds", literal)