Spring Data MongoDB 无法加载参考集合(@DocumentReference)

发布于 2025-01-15 13:04:05 字数 1476 浏览 1 评论 0原文

在 Spring 数据中 findAll 方法引用对象为 null

我正在使用 Reactive Mongo Repository

Ex 父对象

@Data
@Document(collection = "country")
public class CountryBean {

    @Id
    private String id;
    
    private String name;
    
}

子对象

@Document(collection = "city")
public class CityBean {

    @Id
    private String id;
    
    @Field(name = "name")
    private String name;
    
    @Field(name = "city_code")
    private String cityCode;
    
    @Field(name = "show_city")
    private boolean showCity;
    
    @DocumentReference(lazy = false)
    private StateBean state;
}

国家/地区集合 输入图片这里的描述

国家集合(在这里我们可以看到国家属性)

在此处输入图像描述

但是当尝试从数据库获取时,我得到的国家/地区属性为空。尝试了惰性真/假,但没有获取国家对象和状态对象。

@GetMapping("/get-all-state")
    Flux<StateBean> allState() {
        Flux<CountryBean> ct = countryRepository.findAll();
        Flux<StateBean> bean=  stateRepository.findByCountry(ct.blockFirst());
        return bean;
    }
[{"id":"6237a912850ceb6261998a53","name":"Bangalore","statecode":"39","country":null},{"id":"6237a94a850ceb6261998a55","name":"delhi","statecode":"39","country":null}]

In Spring data findAll method reference object is coming as null

I am using Reactive Mongo Repository

Ex Parent Object

@Data
@Document(collection = "country")
public class CountryBean {

    @Id
    private String id;
    
    private String name;
    
}

Child Object

@Document(collection = "city")
public class CityBean {

    @Id
    private String id;
    
    @Field(name = "name")
    private String name;
    
    @Field(name = "city_code")
    private String cityCode;
    
    @Field(name = "show_city")
    private boolean showCity;
    
    @DocumentReference(lazy = false)
    private StateBean state;
}

Country Collection
enter image description here

State Collection (Here we can see the country Attribute)

enter image description here

But When trying to fetch from DB, I am getting country attribute as null. Tried both lazy true/false, but not getting country object along with state object.

@GetMapping("/get-all-state")
    Flux<StateBean> allState() {
        Flux<CountryBean> ct = countryRepository.findAll();
        Flux<StateBean> bean=  stateRepository.findByCountry(ct.blockFirst());
        return bean;
    }
[{"id":"6237a912850ceb6261998a53","name":"Bangalore","statecode":"39","country":null},{"id":"6237a94a850ceb6261998a55","name":"delhi","statecode":"39","country":null}]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅笑轻吟梦一曲 2025-01-22 13:04:05

不幸的是,使用反应式基础设施时不支持@DocumentReference。引用自 文档

“不支持使用反应式读取文档参考
基础设施。”

Unfortunately there is no support for @DocumentReference when using reactive infrastructure. A quote from the documentation:

"There is no support for reading document references using reactive
infrastructure."

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文