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

时间:2011-08-08 13:27:58

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

当我创建元查询以检索实体属性(列)时,我只检索这个:

善良:属性 ID:0 名称:propDate property_representation = INT64

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

在gae console / datastore查看器中,我看到日期已格式化... 它是从元数据还是从数据中解码出来的?

任何想法!?

1 个答案:

答案 0 :(得分:2)

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

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