当我进行元查询来检索实体属性(列)时,我仅检索以下内容:
种类:属性(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/