QueryDSL нечувствительный к регистру фильтр в массиве - PullRequest
1 голос
/ 19 сентября 2019

Рассмотрим следующий класс Java:

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.List;

@Document(collection = "Doc")
public class Doc {

    @Id
    private String id;

    private List<String> tags;
}

Я сгенерировал для него тип запроса QDoc, потому что я хочу легко фильтровать по без учета регистра имена тегов.

/**
 * QDoc is a Querydsl query type for Doc
 */
@Generated("com.querydsl.codegen.EntitySerializer")
public class QDoc extends EntityPathBase<Doc> {

    private static final long serialVersionUID = 602371596L;

    private static final PathInits INITS = PathInits.DIRECT2;

    public static final QDoc doc = new QDoc("doc");

    public final StringPath id = createString("id");

    public final ListPath<String, StringPath> tags = this.<String, StringPath>createList("tags", String.class, StringPath.class, PathInits.DIRECT2);

   ...
}

В настоящее время я выполняю чувствительную к регистру фильтрацию со следующими строками кода:

QDoc qDoc = QDoc.doc;
BooleanBuilder where = new BooleanBuilder();
where.and(qDoc.tags.contains("Tag name to filter for"));

Как выполняется нечувствительная к регистру фильтрация дляa ListPath<String, StringPath>?

Best,

Philipp

1 Ответ

1 голос
/ 19 сентября 2019

Вы можете проверить нечувствительные к регистру данные с помощью метода any() следующим образом:

QDoc qDoc = QDoc.doc;
BooleanBuilder where = new BooleanBuilder();
where.and(qDoc.tags.any().equalsIgnoreCase("Tag name to filter for"));

Это работает для меня.

...