PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Funzioni di matrice Postgresql con QueryDSL

  1. Il primo passaggio consiste nel generare il corretto sql:WHERE tags @> '{"someTag","anotherTag"}'::text[];
  2. Il secondo passaggio è descritto da coladict (grazie mille!):scopri le funzioni che vengono chiamate:@> is arraycontains e ::text[] is string_to_array
  3. 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)); dove tagsStr - è una String con valori separati da ,