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

Postgresql-Array-Funktionen mit QueryDSL

  1. Der erste Schritt besteht darin, das richtige SQL zu generieren:WHERE tags @> '{"someTag","anotherTag"}'::text[];
  2. Der zweite Schritt wird von coladict beschrieben (vielen Dank!):Finden Sie heraus, welche Funktionen aufgerufen werden:@> ist arraycontains und ::text[] ist string_to_array
  3. Der dritte Schritt ist, sie richtig anzurufen. Nach stundenlangem Debuggen habe ich herausgefunden, dass HQL Funktionen nicht als Funktionen behandelt, es sei denn, ich habe ein Ausdruckszeichen hinzugefügt (in meinem Fall:...=true), also sieht die endgültige Lösung so aus:predicate.and(Expressions.booleanTemplate("arraycontains({0}, string_to_array({1}, ','))=true", entity.tags, tagsStr)); wobei tagsStr - ist ein String mit durch , getrennten Werten