如何使用Spring数据从Firestore中的子集合中获取文档

时间:2020-05-27 12:52:17

标签: java firebase google-cloud-firestore spring-data-jpa spring-cloud-gcp

如何使用Spring FirestoreReactiveRepository从子集合中获取文档?

要求是:如何将子集合名称或路径动态地赋予@Document批注?

我的消防站收藏:(城市是第一收藏,公寓是该收藏的子收藏)

cities - nyc (id)- |- name: New York City
                   |- country: USA
                   └ apartments - part_avenue (document id)
                                ├ name: Park Avenue
                                └ zip: 10022
                                - plaza (document id)
                                ├ name: Plaza Riverhouse 
                                └ zip: 10132

城市POJO是

@Document(collectionName = "cities")
public class City {

  @DocumentId
  private String id;
  private String name;
  private String country;
  private List<Apartment> apartments;
}

公寓POJO为:

@Document(collectionName = "apartments")
public class Apartment {

  @DocumentId
  private String id;
  private String name;
  private Integer zip;
}

CityRepository,可从城市集合中获取数据

public interface CityRepository extends FirestoreReactiveRepository<City> {

}

在调用findById(nyc)时,会将公寓返回为null。我也想在城市对象中填充子集合。

尊敬的女士,

在给定的示例中,宠物存储为用户对象(集合)的一部分,但我想将宠物存储在用户集合下的单独子集合中。

给定示例的结果: enter image description here

实际要问的是宠物应该是如下的子集合: 因此,如果您可以提供一个示例来将宠物存储为子集合,然后再进行检索,将很有帮助。

enter image description here

1 个答案:

答案 0 :(得分:0)

应该可以。看看这个sample-它做了类似的事情。 您可以运行它,看看它是否对您有用(它绝对对我有用)。

一个潜在的问题是-您是否在城市班级中缺少公众的二传手?为了使转换正常工作,它们是必需的。

如果这没有帮助,您是否可以创建一个最小的应用程序来复制问题(也许在github上),以便我仔细看看?