我使用Vlad Mihalcea的库来将SQL数组(在我的情况下为Postgresql)映射到JPA。然后,假设我有一个实体,例如。
@TypeDefs( {@TypeDef(name = "string-array", typeClass = StringArrayType.class)} ) @Entity public class Entity { @Type(type = "string-array") @Column(columnDefinition = "text[]") private String[] tags; }
适当的SQL是:
CREATE TABLE entity ( tags text[] );
使用QueryDSL,我想获取包含所有给定标签的行。原始SQL可能是:
SELECT * FROM entity WHERE tags @> '{"someTag","anotherTag"}'::text[];
(摘自:https : //www.postgresql.org/docs/9.1/static/functions- array.html)
可以用QueryDSL做到吗?像下面的代码?
predicate.and(entity.tags.eqAll(<whatever>));
WHERE tags @> '{"someTag","anotherTag"}'::text[];
predicate.and(Expressions.booleanTemplate("arraycontains({0}, string_to_array({1}, ','))=true", entity.tags, tagsStr));
tagsStr
String
,