java - 计算出 Google App 引擎实体的属性数据类型

标签 java google-app-engine reflection

我有这个实体 - 我正在尝试确定其属性的类型 - 在 Google App Engine 的内部数据类型中首选(而不是 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.
}

在 App Engine 的 Java code 中我发现了一些提示:

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

我无法将它们链接到我需要的东西 - 某种反射(reflection)。

我希望我能够做这样的事情:

entity.getPropertyType("some_property");

有人更了解吗?

DataTypeTranslator source code here

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

<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 并且它不告诉其类型。还有属性日期:k1qstkn9np0mpb6fp41cj6i3am
名为 Int64Type:44rmna4kc2g23i9brlupps74ir 的属性的值为“1234567890”,这里严格提及数据类型为“Int64Type”。

最佳答案

我也在找。

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

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 .

关于java - 计算出 Google App 引擎实体的属性数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6769482/

相关文章:

java - 为什么使用原子变量访问比通过同步代码访问这些变量更有效?

java - 当我尝试用 Java 将对象写入服务器时出现 NullPointerException

java - Google App Engine JDO 增强失败

python - 在运行 Python 2.7 的 Google App Engine 中获取 Thread.Lock 需要 50% 的响应时间

java - JSON 响应字符串中包含自动添加的反斜杠

具有 ReferenceProperty 和连接表的 Python 模型

java - 查找有关 Eclipse 插件的执行上下文信息

.NET 4.0 : How can I get the underlying type of a generic parameter if it is Nullable?

c# - 有没有办法确定 C# 4.0 中接口(interface)/委托(delegate)的方差?

java - Firebase 无法解析为类型