2012-03-18 2 views
2

私はM/SアプリケーションからHRDへの移行を開始しました。 古い文字列でエンコードされたキーを新しいものに変換する方法を私に教えてもらえますか?HRDへの移行 - 文字列エンコードされたキーを新しいアプリケーションに変換する方法

文字エンコードされたキーがアプリケーション名を保持していることはわかっていますが、他に必要なことがあるかどうかはわかりません。さらに、私は非常に奇妙に見える(文字列で符号化されたキーを変換するJavaのコード例を持つフォーラムポストを見つけることができませんでした。

この件に関するお手伝いをします。

private static String convertKey(String encodedKey) { 
    Key key = KeyFactory.stringToKey(encodedKey);  
    Key newKey = KeyFactory.createKey(key.getKind(), key.getId());  
    return KeyFactory.keyToString(newKey); 
} 

ありがとう:私はそれがすべての側面を仕事やカバーしています怖いが、私は、次のことを実行するために考えところで

! Uri

答えて

0

エンティティが他の親を持たない親エンティティである限り、上記のコードは機能します。 子エンティティがある場合は、親キーも移行する必要があります。例については

Key parentKey = key.getParent(); 
Key newParentKey = KeyFactory.createKey(parentKey.getKind(), parentKey.getId()); 

だけにして、あなたは、このコード

を使用することができますこの例では、複数の親を持っている場合は、いくつかをこのコードを使用する必要がありますが、一つだけの親のために適用される
Key newKey = KeyFactory.createKey(newParentKey,childKey.getKind(), childKey.getId());  

回。

0

なぜあなたはキーを変換する必要があると思いますか?移行ツールはすべてのデータをコピーし、処理中に新しいアプリケーションを正しく参照できるようにキーを再作成します。

+0

マスター/スレーブアプリケーションでは、リレーションを保存するために文字列でエンコードされたキーを格納することがありました。これらの文字列エンコードされたキーは、通常のエンティティ文字列属性として、また複雑なデータ構造として保存されました。 GAEの移行ツールは変更されておらず、あなたの責任の一部であると主張し、さらにそれをチェックしました。 – Uri

1

次の再帰関数generateKey(Key key)は、すべてのケース(カスケードペアレントも)でエンコードされた文字列キー変換をカバーできます。他の2つの機能は、エンドキーコレクション変換のためのラッパーです。 http://www.geotrack24.com

関連する問題