首页
学习
活动
专区
工具
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相关的云服务产品和文档。

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

相关·内容

没有搜到相关的视频

领券