Lorsque je fais persister une classe qui définit à la fois "gae.encoded-pk" et "gae.pk-id", l'encoded-pk est mis à jour, mais l'id reste nul. Aucune exception n'est levée et le code est un simple copier-coller de la documentation de Google, donc je ne sais pas ce qui peut se passer ici.
La classe définit :
@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;
Et je le fais persister comme ça :
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(myInstance);
// myInstance = pm.makePersistent(myInstance); - Produces the same result.
} finally {
pm.close();
}
J'utilise le débogueur pour parcourir ce code, mais le keyId reste nul, même après la fermeture du gestionnaire de persistance.
Je dois également préciser que le système est exécuté localement à l'aide du kit de développement Google Appengine. Toute indication sur la façon dont je peux déboguer ce problème serait très appréciée !