Как создать идентификатор во встроенном документе, используя данные mongoDB и Spring - PullRequest
1 голос
/ 06 июля 2019

я пытаюсь установить идентификатор во встроенном документе. на следующем уровне в mongoDB, используя данные о весне. Допустим, у меня есть документ пользователя, и у каждого пользователя есть несколько сессий (один-ко-многим), и мне нравится получать автоматическое создание и уникальный идентификатор для сессий. как бы я это сделал? Я пытался создать нижеприведенные объекты для пользователя и сеанса, но идентификатор сессии всегда нулевой!, Пожалуйста, помогите

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

@Document
public class User {

    @Id
    private String id;
    private String emailId;
    private String firstName;
    private String lastName;
    private ArrayList<Session> sessions;
}

public class Session {

    @Id // i like to make this id auto generated and unique
    private String id;
    private String status;
    private String title;
//assume all Args, Getters and setters are exists

1 Ответ

0 голосов
/ 16 июля 2019

Вам необходимо обновить этот уникальный идентификатор вручную, поскольку в spring-data-mongodb.

, кажется, нет автоматической функции, выполняющей это.

Что-то вроде;

public Integer generateUniqueId() {
    Session latestSession = sessionRepository.findTopOrderByIdDesc(); // latest session
    return Optional.ofNullable(latestSession).map(Session::getId).orElse(-1) + 1;
}

где уникальный идентификатор - это просто увеличивающийся счетчик ...

и установите новое значение Session перед сохранением;

newSession.set(generateUniqueId());
sessionRepository.save(newSession);

Для получения более подробной информации, проверьте здесь

...