首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法让spring boot mongodb不把id属性值改成他的object_id?

在Spring Boot中使用MongoDB时,默认情况下,MongoDB会将实体类的id属性映射为MongoDB的ObjectId。如果你想保持id属性的原始值,可以通过使用自定义的序列化和反序列化器来实现。

首先,你需要创建一个自定义的ObjectId转换器,用于将ObjectId转换为字符串,并将其注册到Spring Boot的MongoDB配置中。以下是一个示例:

代码语言:txt
复制
import org.bson.types.ObjectId;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.convert.ReadingConverter;
import org.springframework.data.convert.WritingConverter;

@ReadingConverter
public class ObjectIdToStringConverter implements Converter<ObjectId, String> {

    @Override
    public String convert(ObjectId objectId) {
        return objectId.toString();
    }
}

@WritingConverter
public class StringToObjectIdConverter implements Converter<String, ObjectId> {

    @Override
    public ObjectId convert(String s) {
        return new ObjectId(s);
    }
}

然后,在你的Spring Boot应用程序中,创建一个配置类,将自定义的转换器添加到MongoDB的转换器列表中:

代码语言:txt
复制
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.config.MongoConfigurationSupport;
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;

import java.util.ArrayList;
import java.util.List;

@Configuration
public class MongoConfig extends MongoConfigurationSupport {

    @Override
    public MongoCustomConversions customConversions() {
        List<Object> converters = new ArrayList<>();
        converters.add(new ObjectIdToStringConverter());
        converters.add(new StringToObjectIdConverter());
        return new MongoCustomConversions(converters);
    }
}

现在,当你保存实体类到MongoDB时,id属性将保持原始值,而不是被转换为ObjectId。

这是一个示例实体类的代码:

代码语言:txt
复制
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "your_collection")
public class YourEntity {

    @Id
    private String id;
    private String name;

    // getters and setters
}

这样,你就可以在Spring Boot中使用MongoDB,并保持id属性的原始值不被转换为ObjectId了。

关于腾讯云的相关产品和介绍链接,由于要求不能提及具体的云计算品牌商,建议你访问腾讯云官方网站,查找与MongoDB相关的云服务产品和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Boot 与 Kotlin 使用MongoDB数据库

MongoDB简介 MongoDB是一个基于分布式文件存储数据库,它是一个介于关系数据库和非关系数据库之间产品,其主要目标是在键/存储方式(提供了高性能和高度伸缩性)和传统RDBMS系统(具有丰富功能...MongoDB支持数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂数据类型,也因为存储格式也使得它所存储数据在Nodejs程序应用中使用非常流畅。...MongoDB官网 访问MongoDBSpring Boot中,对如此受欢迎MongoDB,同样提供了自配置功能。...引入依赖 Spring Boot中可以通过在pom.xml中加入spring-boot-starter-data-mongodb引入对mongodb访问支持依赖。...(记得mongod启动您mongodb) 创建要存储User实体,包含属性id、username、age import org.springframework.data.annotation.Id

1.6K50
  • ruby学习笔记(11)--symbol与hash参数

    symbol是啥就不深入讨论了,只简单说说symbol好处 ruby内部对于每个对象,都会有一个数字id用来标识并区分,可以用xxx.object_id来查看 puts "0001".object_id...有没有一种方法,ruby在内部记录一下,如果遇到相同内容字符串,就不用再生成新String对象,而是直接取已经存在对象返回呢?...答案就是symbol 任何对象,只要在前面加个冒号(即":"),就能得到其对应symbol,把上面的代码改成: puts :"0001".object_id puts :"0001".object_id...puts :"0001".object_id puts :"0001".object_id 输出结果类似如下: 155038 155038 155038 155038 比较一下刚才输出,会发现这次貌似四次调用...至于"=>"这个是什么意思,也就是下面要讲哈希参数: 先来看一下哈希表(HashTable),这个跟c#中没什么不同,基本上也就是一个"键-"对集合 products = {"0001"=>"手机

    983100

    这周没写代码,竟然在做这件事!

    毕竟办法总比 bug 多。 其中有一条漏洞小阿巴犯难了:禁止将密码直接填写到项目的配置文件中。...配置文件如图: 小阿巴心想:奇怪了,我之前做 Spring Boot 项目一直都是这么写,从来没有人告诉我这样做是错呀 ?!再说了,密码不写到配置文件里,写到哪里呢?...我们做需求时并不是说找到一个方案就一拍脑袋决定了,还要思考一下有没有其他方法,选择一个相对最优解。...鱼皮:不错,那既然 Spring Boot 会自动读取 application.yml 文件,咱们就不把这个文件提交到代码仓库中(.gitignore 忽略),而是在后续阶段把配置文件 “扔进去”,不就可以了么...小阿巴:给我 点了个赞 ,我再去提升另一个项目的代码质量分。。

    39120

    芋道 Spring Boot MongoDB 入门

    支持数据结构非常松散,是类似 json bjson 格式,因此可以存储比较复杂数据类型。...MongoDB 版本号:4.2.1 本小节,我们会使用 spring-boot-starter-data-mongodb 自动化配置 Spring Data MongoDB 主要配置。...推荐阅读 《你应该知道 MongoDB 最佳实践》 文章。对于初用 MongoDB 开发者,往往错误使用内嵌属性,需要去理解一下。...艿艿:如果胖友看过艿艿写 《芋道 Spring Boot JPA 入门》 文章,会发现和 Spring Data JPA 使用方式,基本一致。...具体,胖友可以自己跑跑,妥妥。 3. 基于方法名查询 示例代码对应仓库:lab-16-spring-data-mongodb 。 在 《芋道 Spring Boot JPA 入门》 文章「4.

    2.6K10

    SpringBoot整合MongoDB

    文章目录 一、SpringMongoDB支持 1、对象/文档映射注解 2、MongoTemplate 3、Repository 二、Spring BootMongoDB支持 三、增删改查 1...1、对象/文档映射注解 Spring Data MongoDB提供了如下所示注解: 注解 含义 @Document 映射领域对象与MongoDB一个文档 @Id 映射当前属性是文档对象ID @DBRef...当前属性将参考其他文档 @Field 为文档属性定义名称 @Version 将文档属性作为版本 2、MongoTemplate 与JdbcTemplate一样,Spring Data MongoDB...为前缀属性来配置MongoDB相关信息。...Spring BootMongoDB提供了一些默认属性 默认端口号为27017 默认服务器为localhost 默认数据库为test 默认无用户名和密码访问方式 默认开启对Repository支持

    80120

    springboot之Mongo

    支持数据结构非常松散,是类似 json bjson 格式,因此可以存储比较复杂数据类型。...MongoDB 最大特点是支持查询语言非常强大, 其语法有点类似于面向对象查询语言,几乎可以实现类似关系数据库单表查询绝大部分功能,而且还支持对数据建立索引。...MongoDB一条记录就是一个文档,是一个数据结构,由字段和对组成。 MongoDB 文档与 JSON 对象类似。字段有可能包括其它文档、数组以及文档数组。...MongoDB 增删改查 Spring Boot 对各种流行数据源都进行了封装,当然也包括了 Mongodb,下面给大家介绍如何在 Spring Boot 中使用 Mongodb: 1、pom 包配置...Boot 对应 MongoDB 增删改查功能已经全部实现。

    1.5K10

    SpringBoot ( 十一 ) :SpringBoot 中 mongodb 使用

    MongoDB对于关系型数据库里表,但是集合中没有列、行和关系概念,这体现了模式自由特点。 MongoDB一条记录就是一个文档,是一个数据结构,由字段和对组成。...MongoDB文档与JSON对象类似。字段有可能包括其它文档、数组以及文档数组。...mongodb增删改查 Spring Boot对各种流行数据源都进行了封装,当然也包括了mongodb,下面给大家介绍如何在spring boot中使用mongodb: 1、pom包配置 pom包里面添加...多数据源mongodb使用 在多mongodb数据源情况下,我们换种更优雅方式来实现 1、pom包配置 添加lombok和spring-boot-autoconfigure包引用 <dependency...spring-boot-autoconfigure – 就是spring boot自动化配置。

    1.3K20

    springboot(十一):Spring bootmongodb使用

    MongoDB对于关系型数据库里表,但是集合中没有列、行和关系概念,这体现了模式自由特点。 MongoDB一条记录就是一个文档,是一个数据结构,由字段和对组成。...MongoDB文档与JSON对象类似。字段有可能包括其它文档、数组以及文档数组。...mongodb增删改查 Spring Boot对各种流行数据源都进行了封装,当然也包括了mongodb,下面给大家介绍如何在spring boot中使用mongodb: 1、pom包配置 pom包里面添加...多数据源mongodb使用 在多mongodb数据源情况下,我们换种更优雅方式来实现 1、pom包配置 添加lombok和spring-boot-autoconfigure包引用 <dependency...spring-boot-autoconfigure - 就是spring boot自动化配置 2、配置文件使用YAML形式添加两条数据源,如下: mongodb: primary: host

    2.2K60
    领券