以下是我的实体定义:

@Entity("Comment")
public class Comment extends BaseEntity {

    @Reference
    private Merchant merchant;

    ...
}

@Entity("Merchant")
class Merchant extends BaseEntity{
    @Id
    @Property("id")
    protected ObjectId id;

    ...
}

以下是我的数据:
comment:{
"_id": ObjectId("546c1ac64652e5180dc21577"),
"merchant" : DBRef("Merchant", ObjectId("546c1ac64652e5180dc21576")),

...
}

当我创建如下查询时:
Query<Comment> query = ds.createQuery(Comment.class);
query.field("merchant").equal(new ObjectId("546c1ac64652e5180dc21576"));

commentDao.findOne(query);

没有返回任何结果,我想问一下用merchant的objectid查询评论数据的正确方法是什么?
谢谢你的帮助。

最佳答案

Query<Comment> query = ds.find(Comment.class).disableValidation()
    .field("Merchant").equal(new Key<>(Merchant.class, merchantId);

我认为您需要禁用验证,否则您将看到一些不必要的警告。
您可以直接查询dbref i d,但是由于dbref本身是类型化的,除非您有一些有效的原因,否则我不会绕过它。

07-24 19:21