gpt4 book ai didi

java - Spring + MongoDB + DBRef

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:41 24 4
gpt4 key购买 nike

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

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

我已经尝试过这样的方法,但没有成功:

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

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

最佳答案

找到了一种方法来完成我需要的事情......

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...

关于java - Spring + MongoDB + DBRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com