2012-10-23 156 views
1

在春天的項目中,我使用了Spring數據的MongoDB,並有2類:彈簧+的MongoDB + DBREF

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" : "Description A" , "classBId" : { "$ref" : "classB" , "$id" : { "$oid" : "50866d45004d84852b16a8b8"}}}

我的問題是,如何讓我的查詢將返回所有對象的ClassA,提及ClassB的實例ID爲 50866d45004d84852b16a8b8?

我已經試過這樣的,但沒有sucess:

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

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

任何ideias?這是甚至可能的方式,我正在做呢?請幫助一些 – RedEagle

回答

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不能序列類型:類ClassB的...