5

Quando creo una classe che definisce persistentemente "gae.encoded-pk" e "gae.pk-id", la codifica-pk viene aggiornata, ma l'ID rimane nullo . Non c'è eccezione che viene lanciata e il codice è una copia di copia diretta dalla documentazione di google, quindi non sono a conoscenza di ciò che potrebbe accadere qui.Datanucleus gae.pk-id non popolato su makePersistent

La classe definisce:

@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; 

E io lo rendono persistente in questo modo:

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

Sto utilizzando il debugger per passare tramite questo codice, ma il keyid rimane nullo, anche dopo il gestore di persistenza è chiuso.

Vorrei anche sottolineare che questo è in esecuzione localmente utilizzando il kit di sviluppo appengine google. Qualsiasi suggerimento su come avrei potuto eseguire il debug di questo sarebbe molto apprezzato!

+0

stesso problema qui – craigrs84

risposta

1

ho trovato questa risposta:

Il plugin GAE JDO imposta sempre e solo un "gae.pk-id"/"nome-gae.pk" campo quando si legge in un campo contrassegnato con quello dal datastore (basta fare una ricerca nel trunk SVN, FetchFieldManager è l'unico posto dove è caricato - non lo imposta quando fa un PUT). Non ho idea di cosa ha fatto in 1.x, ma tutti i test di GAE passano in 2.x come hanno fatto in 1.x. Ma poi quella "caratteristica" non è comunque il JDO standard, quindi di scarso interesse per me.

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

Problemi correlati