首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spring中自动生成字符串类型@Id以连接mongo

问在Spring中自动生成字符串类型@Id以连接mongo
EN

Stack Overflow用户
提问于 2022-05-10 06:57:54
回答 1查看 803关注 0票数 1

我正在递增自动生成的Id值,但我需要字符串类型

.This是我的服务类:

代码语言:javascript
复制
package com.stackroute.orderhistory.service;

import com.stackroute.orderhistory.model.AutogenerateId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;

import java.util.Objects;


import static org.springframework.data.mongodb.core.FindAndModifyOptions.options;

@Service
public class SequenceGeneratorService {
    @Autowired
    private MongoOperations mongoOperations;

    public String getSequenceNumber(String sequenceName){
        Query query=new Query(Criteria.where("order_id").is(sequenceName));

        Update update=new Update().inc("seq",1);

        AutogenerateId counter = mongoOperations
                .findAndModify(query,
                        update, options().returnNew(true).upsert(true),
                        AutogenerateId.class);

        return !Objects.isNull(counter) ? counter.getSeq() : "1";
    }
}

.This是我的实体类:

代码语言:javascript
复制
import lombok.*;
import org.springframework.data.annotation.Id;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document;

@NoArgsConstructor
@ToString
@AllArgsConstructor
@Getter
@Setter
@Document(collection = "orders")
public class OrderHistoryModel {
    @Transient
    public static final String SEQUENCE_NAME="Ordersequence";
    @Id
    private String orderId;
    private String productName;
    private int orderAmount;
    private String orderPlaced;
    private String orderStatus;
    private String paymentMethod;
    private String shippingAddress;
}

.This是我的AutoGenerated实体类:

代码语言:javascript
复制
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "db_sequence")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AutogenerateId {

    @Id
    private String id;
    private String seq;
}

在这个代码中,我得到了Order_Id作为1,2,3等等(在邮递员中)

但我需要Order_Id像order1,order2,order3等等.请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2022-09-21 21:50:55

在我的例子中,我没有自定义id的自动生成,而是:在我的实体中,我只是用@Id注释了id:

​

​

  • the DTO:

​

​

  • ,这里是我的服务:

​

​

  • dtoToUser:

方法

​

​

mongodb将为我生成一个随机和唯一的UUID,如下所示:

​

​

因此,使用MongoDB提供的ID,这些ID或多或少是普遍唯一的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72181887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档