2

在一个 Spring 项目中,我使用 Spring Data MongoDB,并且有 2 个类:

public class ClassA
{
@Id
private String id;

private String description

@DBRef
private ClassB classBId;

// Getters and Setters
}

public class ClassB
{
@Id
private String id;

private String description

// Getters and Setters
}

所以我有 2 个集合,classA 和 classB,并用几个实例填充它们。

classA 实例的存储方式如下:

{“_id”:{“$oid”:“5086b371004d7c4bfff0a142”},“_class”:“com.spring.custom.ClassA”,“description”:“描述A”,“classBId”:{“$ref”:“类B”,“$id”:{“$oid”:“50866d45004d84852b16a8b8”}}}

我的问题是,如何进行查询以返回所有引用 id 为 50866d45004d84852b16a8b8 的 classB 实例的 classA 对象?

我试过这样但没有成功:

ClassB cb = new ClassB(); cb.setId("50866d45004d84852b16a8b8");

Criteria criteria = Criteria.where("classBId").is(classBObject);
Query query = new Query(); query.addCriteria(criteria);
4

1 回答 1

1

找到了一种方法来做我需要的...

ObjectId oid = new ObjectId(id);
Criteria.where(classBid+".$id").is(oid);

不幸的是,这不是我所期望的方式,但它仍然是一个解决方案......

我什至尝试将我的 Spring Data MongoDB API 更新为 1.0.4 RELEASE 而不是 1.0.2 RELEASE,希望能够得到相同的结果,例如:

ClassB cb = new ClassB();
cb.setId("50866d45004d84852b16a8b8");

Criteria criteria = Criteria.where("classBId").is(classBObject);
Query query = new Query();
query.addCriteria(criteria); 

但我只是不断收到以下错误:

java.lang.RuntimeException:json 无法序列化类型:class ClassB ...

于 2012-10-24T15:49:08.550 回答