Ich verwende die lokale Entwicklung Version von App Engine JDO-Implementierung. Wenn ich ein Objekt abfrage, das andere Objekte als eingebettete Felder enthält, werden die eingebetteten Felder als null zurückgegeben.Eingebettete JDO-Feld wird nicht von Abfrage abgerufen
Zum Beispiel können sagen, dass dies das Hauptziel ist, dass ich persistierenden bin:
@PersistenceCapable
public class Branch {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String name;
@Persistent
private Address address;
...
}
und das ist mein eingebettetes Objekt:
@PersistenceCapable(embeddedOnly="true")
public class Address {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String street;
@Persistent
private String city;
...
}
der folgende Code abrufen nicht das eingebettete Objekt:
PersistenceManager pm = MyPersistenceManagerFactory.get().getPersistenceManager();
Branch branch = null;
try {
branch = pm.getObjectById(Branch.class, branchId);
}
catch (JDOObjectNotFoundException onfe) {
// not found
}
catch (Exception e) {
// failed
}
finally {
pm.close();
}
Hat jemand eine Lösung dafür? Wie kann ich das Branch-Objekt zusammen mit seinem eingebetteten Adressfeld abrufen?
Danke für die schnelle Antwort! Ich werde das testen und Sie wissen lassen, ob es funktioniert. – Chania
Wenn ein Feld in der aktiven Fetch-Gruppe ist, dann sollte es offensichtlich abgerufen werden. Wenn Sie sagen, dass dies nicht der Fall ist, dann stellen Sie einen einfachen Testfall bereit und melden Sie ihn unter http://code.google.com/p/datanucleus-appengine/issues/list. Wenn Sie dies nicht melden, bedeutet dies, dass niemand am Projekt beteiligt ist darüber – DataNucleus
Ich bin mir nicht sicher, ob dies ein Fehler oder ein Teil der JDO-Spezifikation ist. Ich erinnere mich, irgendwo gelesen zu haben, dass das Laden von eingebetteten Feldern in den JDO-Spezifikationen lag, aber ich kann es jetzt nicht finden. – Cengiz