以下是我的实体定义:
@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本身是类型化的,除非您有一些有效的原因,否则我不会绕过它。