Google App Engineの内部データ型では、Javaのデータ型ではなく、このエンティティがあります。
以下のコードは明らかに簡略化されています。実際には、私はではありません。はエンティティのプロパティまたはそれに関する他のものを知っていません。 App EngineのJava codeでGoogle App Engineエンティティのプロパティデータ型の処理
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.
}
私はいくつかのヒントを見つけた。
DataTypeTranslator
DataTypeTranslator.typeMap (internal private member)
Property.Meaning.GD_PHONENUMBER
私は私が必要なものの中に一緒にそれらをリンクすることができないんだ - 反射のいくつかの並べ替えを。
私はこのような何かを行うことができたことを望む:
entity.getPropertyType("some_property");
誰もがよく知っていますか?
DataTypeTranslator source code here
編集#1:< < の違いを無視この1。私はこれらのポストフィックスを書いてくれました(私はドキュメントで混乱しました)。
ここに私が見つけたより重要な情報があります。
エンティティ(データストアからフェッチしたもの)をポイントするとEclipseのツールチップのミニウィンドウが表示されます。
Datastoreは、このペイロードを生のテキストとして送信しているようですが、それを解析する必要があるかもしれません(ただし、コード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」であることを厳密に記述しています。
戻ってきたオブジェクトがどのJava型か確認できませんか? Javaとデータストア型の間には1:1のマッピングがあるはずです。 –