GCP 数据存储查询嵌套实体引用 (entityB.name)
GCP Datastore Querying on nested entity references (entityB.name)
我无法确定 GCP 数据存储是否支持查询实体的嵌套属性。
我现在的用例是这样的:
Module
-> Application
模块
申请
@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"
感谢您抽出宝贵时间阅读本文。非常感谢任何帮助!
看起来您使用的是 Reference 而不是嵌入式实体。模块中的 Application 实际上是对 Application 实体的关键引用。因此应用程序的值不是模块实体的索引。
我无法确定 GCP 数据存储是否支持查询实体的嵌套属性。
我现在的用例是这样的:
Module
-> Application
模块
申请
@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"
感谢您抽出宝贵时间阅读本文。非常感谢任何帮助!
看起来您使用的是 Reference 而不是嵌入式实体。模块中的 Application 实际上是对 Application 实体的关键引用。因此应用程序的值不是模块实体的索引。