有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java计算GoogleAppEngine实体的属性数据类型

我在GoogleAppEngine的首选内部数据类型(与Java数据类型相反)中有一个实体,我正在尝试确定其属性的类型
下面的代码明显简化了。事实上,我并不知道实体的属性或任何其他相关信息

final DatastoreService dss = DatastoreServiceFactory.getDatastoreService();
final Query query = new Query("Person");
final PreparedQuery pq = dss.prepare(query);

for (Entity entity : pq.asIterable())
{
    final Object property = entity.getProperty("some_property");
    // Here I want to determine which data type 'property' represents - GAE-wise.
}

在应用程序引擎的Java code中,我发现了一些提示:

DataTypeTranslator
    DataTypeTranslator.typeMap (internal private member)
Property.Meaning.GD_PHONENUMBER

我无法将这些联系到我需要的东西中——某种反思

我希望我能做到这样:

entity.getPropertyType("some_property");

有人知道得更清楚吗

DataTypeTranslator source code here

编辑#1:<&书信电报; 就这一个。是我放了这些贴子(我被医生弄糊涂了)
这是我发现的更重要的信息
当我指向一个实体(我刚从数据存储中获取的实体)时,我在Eclipse的工具提示小窗口中得到了它
数据存储似乎将其作为原始文本发送(此有效负载),这很好,也许我必须解析它(但是,如何从代码LOL获得它)
注意这里的类型,它写得很简单
这是:

<Entity [Bird(9)]:
    Int64Type:44rmna4kc2g23i9brlupps74ir#Int64Type = 1234567890
    String:igt7qvk9p89nc3gjqn9s3jq69c = 7tns1l48vpttq5ff47i3jlq3f9
    PhoneNumber:auih50aecl574ud23v9h4rfvt1#PhoneNumberType = 03-6491234
    Date:k1qstkn9np0mpb6fp41cj6i3am = Wed Jul 20 23:03:13 UTC 2011
>

例如,名为String:igt7qvk9p89nc3gjqn9s3jq69c的属性的值为7tns1l48vpttq5ff47i3jlq3f9,并且它不告诉它的类型。还有属性Date:k1qstkn9np0mpb6fp41cj6i3am
名为Int64Type:44rmna4kc2g23i9brlupps74ir的属性的值为“1234567890”,这里它严格地提到数据类型为“Int64Type”


共 (1) 个答案

  1. # 1 楼答案

    我也在找

    这是一个有点黑客,但至少我的输出包括类型(不需要一个秘密解码器环)。但我的代码略有不同:

    Query allusersentityquery = new Query();
    allusersentityquery.setAncestor(userKey);
    
    for (final Entity entity : datastore.prepare(allusersentityquery).asIterable()) {
        Map<String, Object> properties = entity.getProperties();
        String[] propertyNames = properties.keySet().toArray(
            new String[properties.size()]);
    
        for(final String propertyName : propertyNames) {
          // propertyNames string contains
          // "com.google.appengine.api.datastore.PostalAddress" if it is a Postal Address
        }
    }
    

    似乎没有关于确定属性类型here的文档