5

「gae.encoded-pk」と「gae.pk-id」の両方を永続的に定義するクラスを作成すると、encoded-pkは更新されますが、idはnullのままです。例外はスローされず、コードはGoogleのドキュメントのストレートコピーペーストであるため、ここで何が起こっているのかは分かりません。Datanucleus gae.pk-idがmakePersistentに設定されていません

クラスが定義されています。

@PersistenceCapable 
public class MyClass { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    @Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true") 
    private String encodedKey; 

    @Persistent 
    @Extension(vendorName="datanucleus", key="gae.pk-id", value="true") 
    private Long keyId; 

そして、私はこのようにそれを永続的に:

PersistenceManager pm = PMF.get().getPersistenceManager(); 
try { 
    pm.makePersistent(myInstance); 
    // myInstance = pm.makePersistent(myInstance); - Produces the same result. 
} finally { 
    pm.close(); 
} 

私はこのコードをステップ実行するデバッガを使用していますが、鍵IDがnullのまま、した後も持続マネージャが閉じられます。

これは、Google App Engine開発キットを使用してローカルで実行されていることを指摘しておきます。どのように私はこれをデバッグすることができたかについてのすべてのポインタは非常に感謝される!

+0

ここで同じ問題が発生します – craigrs84

答えて

1

私はこの答えを見つけた:

それはデータストアからその付いたフィールド(読み込み時にGAE JDOプラグインがしか「gae.pk-ID」/「gae.pk名」フィールドを設定しますSVNトランクで検索するだけで、FetchFieldManagerはロードされる唯一の場所です.PUTを実行するときには設定されません)。 1.xで何をしたのかは分かりませんが、GAEのすべてのテストは2.xで1.xと同じように成功しています。しかし、その "機能"は、とにかく標準のJDOではないので、私にはほとんど関心がありません。

参照:Unable to get ID of newly-created JDO persistent entity using GAE/J DataNucleus plug-in version 2.1.2

関連する問題