Spring Boot与MongoDB CRUD应用模型类定义求助:Site含4个Cellular组件
解决Spring Boot + MongoDB中Site模型类的定义问题
嗨,我来帮你搞定这个模型类的定义!根据你的需求,我们可以把Cellular作为嵌入式文档嵌套在Site类中,完全适配MongoDB的文档型存储特性。下面是完整的实现方案:
1. 先定义Cellular类(蜂窝单元)
因为Cellular是Site的组成部分,不需要单独映射到MongoDB集合,所以它是一个普通POJO类,你可以根据业务需求添加专属属性:
import lombok.Data; // 用Lombok的@Data自动生成getter、setter、toString等方法,减少样板代码 @Data public class Cellular { private String cellularId; // 蜂窝单元自身ID private String frequencyBand; // 频段 private int signalStrength; // 信号强度 private String operatingStatus; // 运行状态(如正常/维护中) // 可按需添加更多属性:带宽、接入用户数等 }
2. 定义Site类(站点)
给Site添加MongoDB映射注解,同时嵌入4个Cellular对象:
import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import lombok.Data; // 指定该类映射到MongoDB的`sites`集合 @Document(collection = "sites") @Data public class Site { @Id private String siteId; // 站点ID,MongoDB会自动生成ObjectId(若不手动赋值) private String projectPhase; // 项目阶段 private String region; // 地区 private String city; // 城市 private String siteName; // 站点名称 // 对应需求中的4个蜂窝单元,用明确字段区分类型 private Cellular primaryCellular; // 主蜂窝单元 private Cellular secondaryCellular; // 次蜂窝单元 private Cellular backupCellular; // 备份蜂窝单元 private Cellular emergencyCellular; // 应急蜂窝单元 // 若无需区分单元类型,也可用List存储(适合数量灵活的场景): // private List<Cellular> cellulars = new ArrayList<>(); }
关键细节说明
- @Document注解:
@Document(collection = "sites")告诉Spring Data MongoDB,该类实例会被存储到名为sites的MongoDB集合中。 - @Id注解:标记
siteId为文档主键,若不手动赋值,MongoDB会自动生成ObjectId类型的字符串ID。 - 嵌入式文档:
Cellular类无需加@Document,它会作为Site文档的子结构存储,示例存储结构如下:
{ "_id": "60d21b4667d0d8992e610c85", "siteName": "北京朝阳区站点", "region": "华北", "city": "北京", "primaryCellular": { "cellularId": "CELL-001", "frequencyBand": "2.4GHz", "signalStrength": -50, "operatingStatus": "正常" }, // 其他蜂窝单元字段... }
- Lombok简化代码:
@Data注解自动生成getter、setter等方法,省去样板代码的编写;如果未使用Lombok,手动编写这些方法即可。
内容的提问来源于stack exchange,提问作者Achref Bannouri
相关产品推荐
相关产品推荐

