- Il primo passaggio consiste nel generare il corretto sql:
WHERE tags @> '{"someTag","anotherTag"}'::text[];
- Il secondo passaggio è descritto da coladict (grazie mille!):scopri le funzioni che vengono chiamate:@> is arraycontains e ::text[] is string_to_array
- Il terzo passaggio consiste nel chiamarli correttamente. Dopo ore di debug ho capito che HQL non tratta le funzioni come funzioni a meno che non aggiunga un segno di espressione (nel mio caso:...=true), quindi la soluzione finale si presenta così:
predicate.and(Expressions.booleanTemplate("arraycontains({0}, string_to_array({1}, ','))=true", entity.tags, tagsStr));
dovetagsStr
- è unaString
con valori separati da,