@Reference字段上的Morphia点符号查询

时间:2014-12-24 11:23:12

标签: java mongodb mongodb-java morphia

我正在查询我的' schede'集合,其文档如下所示:

{
    "_id" : ObjectId("5499f0f74b9037f6efcb4e00"),
    "className" : "it.trew.omg.model.SchedaLavoro",
    "dataInserimento" : ISODate("2014-12-23T22:47:19.664Z"),
    "dataAggiornamento" : ISODate("2014-12-23T22:54:27.426Z"),
    "titolo" : "prima",
    "descrizione" : "my project",
    "dataInizio" : ISODate("2014-11-30T23:00:00Z"),
    "dataFine" : ISODate("2014-12-02T23:00:00Z"),
    "aperta" : true,
    "cliente" : DBRef("soggetti", ObjectId("5495d48c4b909c169ce5d33e"))
}

" cliente"引用来自" soggetti"系列:

{
    "_id" : ObjectId("549889a24b90f32e51dc2e0c"),
    "className" : "it.trew.omg.model.Soggetto",
    "dataInserimento" : ISODate("2014-12-22T21:14:10.850Z"),
    "dataAggiornamento" : ISODate("2014-12-22T21:14:10.850Z"),
    "ragioneSociale" : "Stefania"
}

在我的实体代码中(SchedaLavoro对应于' schede'集合),它是:@Reference Soggetto cliente;

现在我的搜索查询就是这样:

public List<SchedaLavoro> findByQuery( String queryTerm ) {
        Query<SchedaLavoro> query = createQuery();
        if ( !queryTerm.isEmpty() ) {
            query.or(
                query.criteria("titolo").containsIgnoreCase(queryTerm),
                query.criteria("descrizione").containsIgnoreCase(queryTerm)
            );
        }
        query.order( "-aperta, -dataInserimento");
        return query.asList();
    }

我想将此添加到我的&#34;或&#34;标准清单:

query.criteria("cliente.ragioneSociale").containsIgnoreCase(queryTerm)

但是我收到了这个错误:

  

不能使用过去的点符号&#39; cliente&#39;无法找到   &#39; it.trew.omg.model.SchedaLavoro&#39;在验证时 -   cliente.ragioneSociale

如何查询引用的子文档的字段?

1 个答案:

答案 0 :(得分:1)

@Reference文档不是子文档。你无法像这样查询它们。您尝试做的是加入,而mongodb并不支持。你必须做两个不同的询问。