- Bước đầu tiên là tạo sql:
WHERE tags @> '{"someTag","anotherTag"}'::text[];
- Bước thứ 2 được mô tả bởi coladict (cảm ơn rất nhiều!):tìm ra các hàm được gọi là:@> là arraycontains và ::text [] là string_to_array
- Bước thứ 3 là gọi chúng đúng cách. Sau nhiều giờ gỡ lỗi, tôi đã phát hiện ra rằng HQL không coi các hàm là hàm trừ khi tôi thêm dấu biểu thức (trong trường hợp của tôi:... =true), vì vậy giải pháp cuối cùng trông giống như sau:
predicate.and(Expressions.booleanTemplate("arraycontains({0}, string_to_array({1}, ','))=true", entity.tags, tagsStr));
nơitagsStr
- là mộtString
với các giá trị được phân tách bằng,