GCP数据存储区查询嵌套实体引用(entityB.name)

时间:2020-08-05 18:44:25

标签: java google-cloud-platform google-cloud-datastore datastore spring-cloud-gcp

我很难弄清楚GCP数据存储是否支持查询实体的嵌套属性。

我现在的用例如下:

Module
  -> Application

模块

enter image description here

应用

enter image description here

@Entity
class Module {
  Long id;

  @Reference
  Applicaiton application;
}
@Entity
class Application {
  Long id;
  String name;
}

我想尝试根据嵌套的Application名称查询模块。我曾尝试像这样提供过滤器,但没有成功:

Query<? extends BaseEntity> query = Query.newEntityQueryBuilder()
    .setKind("module") 
    .setFilter(PropertyFilter.eq("application.name", "UserApp"))
    .build();

我正在通过其DatastoreTemplate使用Springs GCP数据存储抽象,但这似乎并不相关,因为当我尝试在GCP控制台上运行GQL时也没有返回结果。

SELECT * FROM module WHERE application.name = "UserApp"

感谢您抽出宝贵的时间阅读此内容。任何帮助,我们将不胜感激!

1 个答案:

答案 0 :(得分:2)

您似乎正在使用Reference而不是嵌入式实体。模块中的应用程序实际上是对应用程序实体的关键引用。因此,application的值不在Module实体上建立索引。