我在 Spring Boot 中使用 MongoDB 作为数据库。但我在添加数据时遇到问题

问题描述 投票:0回答:1

这些是我的实体:-

这是我的骑手 Rider 实体

package com.app.enities;

import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.List;

@Document(collection = "Rider")
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
public class Rider {
    @Id
    private String id;
    private String firstName;
    private String lastName;
    private String shortCred;
    private Team teamName;
    private List<Sponsor> sponsorList; //Enum
}

这是我的团队实体,我正在其中添加有关团队的信息

package com.app.enities;

import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
public class Team {
    @Id
    private String id;
    private String name;
    private Bikes bike; //Enum

}

我正在以 JSON 形式添加数据。但由于 id 会自动生成,因此我不会提供任何类型的 ID:-

{
    "firstName": "Marc",
    "lastName": "Marquez",
    "shortCred": "MM93",
    "teamName": {
        "name": "Gresini Racing",
        "bike": "DUCATI"
    },
    "sponsorList": [
        "REDBULL",
        "SHOEI",
        "ALPINESTAR",
        "ESTRELLA_GALICIA",
        "SAMSUNG"
    ]
}

但是正如您在下面的响应中看到的(我在 .save(newRider) 方法之后得到的回报),骑手 id 正在自动生成,但团队 id 没有自动生成。

{
    "id": "65c731de83a0e43d7526c880",
    "firstName": "Marc",
    "lastName": "Marquez",
    "shortCred": "MM93",
    "teamName": {
        "id": null, <--- null value here
        "name": "Gresini Racing",
        "bike": "DUCATI"
    },
    "sponsorList": [
        "REDBULL",
        "SHOEI",
        "ALPINESTAR",
        "ESTRELLA_GALICIA",
        "SAMSUNG"
    ]
}

这是我第一次将 MongoDb 与 spring 一起使用,所以我不知道表之间的关联是如何工作的,也不知道它是否是像我们在 sql 中使用 @OneToOne 或 @ManyToOne 等那样关联到表的东西。

mongodb spring-boot spring-data-jpa spring-data spring-data-mongodb
1个回答
0
投票

根据我的说法,这是预期的行为。 如果是 MongoDB,将仅为顶级实体生成“id”。

您可以参考这里提供的示例: https://spring.io/blog/2021/11/29/spring-data-mongodb-relation-modelling

“id”是为“Book”生成的,但不是为“Publisher”生成的。

© www.soinside.com 2019 - 2024. All rights reserved.