Querydsl路径深度

时间:2013-12-16 13:23:11

标签: mongodb querydsl

我有一个包含DocumentValue列表的实体文档

@QueryEntity
@Document
public class Document{
 private List<DocumentValue> documentValues;
}

DocumentValue还可以包含DocumentValue

列表
@QueryEntity
public class DocumentValue {
String value;
String name;
String id;
List<DocumentValue> documentValues;
}

我现在正尝试做类似

的事情
private QDocumentValue getDocumentValuePathByDepth(int depth){
               ListPath path = QDocument.document.documentValues;
               if (depth != null) {
            for (int i = 0; i < depth; i++) {
                path = path.documentValues.any();
            }
        }
}

有人知道是否有可能在这个深度做一个eleMatch?

ListPath<QDocumentValue> query = getDocumentValuePathByDepth(5);
return query.fieldId.eq(documentFilter.getFieldId()).and(query.value.between(from, to));

该深度的documentValues的一个元素应该满足两个条件

BR D.C。

1 个答案:

答案 0 :(得分:1)

像Querydsl Mongodb一样支持 elemMatch

QDocumentValue documentValue = QDocumentValue.documentValue;
query.anyEmbedded(document.documentValues, documentValue)
     .on(documentValue.id.eq(documentFilter.getFieldId(),
         documentValue.value.between(from, to));