Korzystam z lokalnej wersji rozwojowej implementacji JDO App Engine. Kiedy wysyłam zapytanie do obiektu, który zawiera inne obiekty jako pola osadzone, pola osadzone są zwracane jako puste.Wbudowane pole JDO nie jest pobierane przez zapytanie
Na przykład, powiedzmy, że jest to główny cel, że jestem utrzymujących:
@PersistenceCapable
public class Branch {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String name;
@Persistent
private Address address;
...
}
a to mój obiekt osadzony:
@PersistenceCapable(embeddedOnly="true")
public class Address {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String street;
@Persistent
private String city;
...
}
następujący kod nie odzyskać obiekt osadzony:
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();
}
Czy ktoś ma rozwiązanie tego problemu? Jak mogę pobrać obiekt Branch wraz z jego osadzonym polem Address?
Dzięki za szybką odpowiedź! Sprawdzę to i dam znać, czy to działa. – Chania
Jeśli pole znajduje się w aktywnej grupie pobierania, to oczywiście powinno zostać pobrane. Jeśli powiesz, że nie jest, to dlaczego nie dostarczyć prostej wersji testowej i zgłosić ją na http://code.google.com/p/datanucleus-appengine/issues/list. Nie zgłoszenie jej prawdopodobnie oznacza, że nikt zaangażowany w projekt nie będzie wiedział o tym – DataNucleus
Nie jestem pewien, czy jest to błąd, czy też część specyfikacji JDO. Pamiętam, że przeczytałem gdzieś, że leniwy ładunek osadzonych pól był w specyfikacji JDO, ale nie mogę go teraz znaleźć. – Cengiz