Kiedy tworzę klasę, która określa zarówno "gae.encoded-pk" i "gae.pk-id" persistent, kodowany-pk jest aktualizowany, ale id pozostaje zerowy . Nie ma wyjątku, a kod jest prostą kopią z dokumentacji google, więc nie mam pojęcia, co może się tu wydarzyć.Datanucleus gae.pk-id nie został wypełniony przy makePersistent
Klasa definiuje:
@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;
I sprawiają, że uporczywe tak:
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
pm.makePersistent(myInstance);
// myInstance = pm.makePersistent(myInstance); - Produces the same result.
} finally {
pm.close();
}
Używam debugera do kroku przez ten kod, ale KeyID pozostaje null, nawet po menedżer trwałości jest zamknięty.
Chciałbym również zwrócić uwagę, że jest to działa lokalnie przy użyciu zestawu narzędzi Google Appengine. Wszelkie wskazówki dotyczące tego, jak mogę to debugować, byłyby bardzo mile widziane!
ten sam problem tutaj – craigrs84