java - 是否可以从元数据_property_解码属性类

标签 java google-app-engine google-cloud-datastore

当我进行元查询来检索实体属性(列)时,我仅检索以下内容:

种类:属性(property) 编号:0 名称:propDate property_representation = INT64

我没有足够的信息来将此属性映射到 java.util.Date 类,因为 INT64 可以是 java.lang.Byte、java.lang.Short、java.lang.Integer、java.lang.Long

在 gae 控制台/数据存储查看器中,我看到日期已格式化... 它是从元数据还是数据中解码的?

有什么想法吗!?

最佳答案

App Engine 数据存储区是无架构的。您的元数据查询返回有关已索引属性的信息,但对实体中的实际数据一无所知。实际上,您可以拥有相同种类的实体,但它们具有相同属性名称的不同类型,并且如果这些类型具有相同的基础表示形式,则它们在元数据中将无法区分。您会在数据存储查看器中注意到 View 表中的列(不应将其视为 RDBMS 意义上的“列”)未使用类型进行标记。这不仅仅是一个 UI 选择;这是因为该级别的属性名称本质上没有类型。

实体中每个属性的实际数据存储类型与实体一起存储在 Protocol Buffer 中。这些不是 Java(或 Python)类型,而是诸如“atom:category”、“georss:point”、“gd:when”等(当然还有更熟悉的“int”、“float”、 “string”),并且可以在单个实体的数据存储查看器中显示,因为它们实际上已被反序列化。在 Java 和 Python 代码中,这些由应用程序通过数据存储 API 映射到 Java 和 Python 类型。但是,存储在数据存储中的数据"is"java.util.Date 是没有意义的;它存储为 gd.when,并且可以从与 Python datetime.date 相同的数据存储中读取。

关于java - 是否可以从元数据_property_解码属性类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6982833/

相关文章:

java - 从 Google App 引擎备份和恢复实体

google-app-engine - GAE/J 中的数据库设计 : relational modelling vs entity-attribute-value

java - 如何使用 Apache Kafka 在 Spring Boot 中使用和保存自定义类型列表?

java - "No tests found for given includes"用于 TestNG + Gradle + @Test(dependsOnMethods)

android - 未创建位图

google-app-engine - 使用 JPA 和 Google App Engine 更新查询

python - 从另一个页面引用实体

java - Java 中的流如何影响内存消耗?

java - Shiro-Guice 过滤器链角色配置

google-app-engine - appengine 上的 Jinja2 版本 2.8