首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring + MongoDB + DBRef

Spring + MongoDB + DBRef
EN

Stack Overflow用户
提问于 2012-10-23 17:26:04
回答 1查看 3.5K关注 0票数 2

在一个Spring项目中,我使用了Spring,并有两个类:

代码语言:javascript
复制
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
}

这样,我就有两个集合,classA和classB,并用几个实例填充它们。

classA实例的存储方式如下:

{ "_id“:{ "$oid”:“5086b371004d7c4c4bfff0a142”},"_class“:"com.spring.custom.ClassA",”描述“:”描述A“,"classBId”:{ "$ref“:"classB”,"$id“:{ "$oid”:“50866d45004d84852b16a8b8”}}

我的问题是,如何使用id 50866d45004d84852b16a8b8返回引用classB实例的所有classB对象?

我试过这样做,但没有成功:

代码语言:javascript
复制
ClassB cb = new ClassB(); cb.setId("50866d45004d84852b16a8b8");

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-24 15:49:08

找到了做我需要的事的方法..。

代码语言:javascript
复制
ObjectId oid = new ObjectId(id);
Criteria.where(classBid+".$id").is(oid);

不幸的是,这不是我所期望的那样,但这是一个解决办法.

我甚至尝试将我的Spring API更新为1.0.4版本,而不是1.0.2版本,希望我能够得到类似的结果:

代码语言:javascript
复制
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.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13035978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档