Внешний ключ / DBRef в весеннем хранилище данных - PullRequest
0 голосов
/ 18 марта 2020

У меня есть 2 объекта: 1- Пользователь:

@Document(collectionName = CollectionConstants.USER_COLLECTION)
public class User {
  @DocumentId
  protected String id;

  private String username;
}

2- Конкурс:

@Document(collectionName = CollectionConstants.CONTEST_COLLECTION)
public class Contest {
  private List<User> contestants;
}

Как сохранить только идентификатор пользователя (будь то список пользователи или один пользователь) в базе данных, позволяя Spring Data управлять этим автоматически?

Я на самом деле ищу альтернативу для следующего:

  • Spring Data JPA: @OneToMany, @ManyToOne

  • Spring Data MongoDB: @DBRef

1 Ответ

0 голосов
/ 19 марта 2020

Я проверил в Spring Cloud GCP для Firestore , и он сообщает:

Стартер автоматически конфигурирует и регистрирует компонент Firestore в контексте приложения Spring. Чтобы начать использовать его, просто используйте аннотацию @Autowired.

@Autowired
Firestore firestore;

void writeDocumentFromObject() throws ExecutionException, InterruptedException {
    // Add document data with id "joe" using a custom User class
    User data = new User("Joe",
            Arrays.asList(
                    new Phone(12345, PhoneType.CELL),
                    new Phone(54321, PhoneType.WORK)));

    // .get() blocks on response
    WriteResult writeResult = this.firestore.document("users/joe").set(data).get();

    LOGGER.info("Update time: " + writeResult.getUpdateTime());
}

User readDocumentToObject() throws ExecutionException, InterruptedException {
        ApiFuture<DocumentSnapshot> documentFuture =
                this.firestore.document("users/joe").get();

        User user = documentFuture.get().toObject(User.class);

        LOGGER.info("read: " + user);

        return user;
}

Есть образец https://github.com/spring-cloud-gcp/spring-cloud-gcp-samples/spring-cloud-gcp-firestore-sample

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...