Sto utilizzando la versione di sviluppo locale dell'implementazione JDO di App Engine. Quando interrogo un oggetto che contiene altri oggetti come campi incorporati, i campi incorporati vengono restituiti come null.Il campo JDO incorporato non viene recuperato dalla query
ad esempio, consente dire che questo è l'oggetto principale che sto persistente:
@PersistenceCapable
public class Branch {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String name;
@Persistent
private Address address;
...
}
e questo il mio oggetto incorporato:
@PersistenceCapable(embeddedOnly="true")
public class Address {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String street;
@Persistent
private String city;
...
}
il seguente codice non recupera l'oggetto incorporato:
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();
}
Qualcuno ha una soluzione per questo? Come posso recuperare l'oggetto Branch insieme al suo campo Indirizzo incorporato?
Grazie per la pronta risposta! Lo metterò alla prova e ti faccio sapere se funziona. – Chania
Se un campo si trova nel gruppo fetch attivo, deve ovviamente essere prelevato. Se dici che non è così, perché non fornire una semplice testcase e segnalarlo su http://code.google.com/p/datanucleus-appengine/issues/list Non riportarlo probabilmente significa che nessuno coinvolto nel progetto saprà su di esso – DataNucleus
Non sono sicuro se questo è un bug o una parte delle specifiche JDO. Ricordo di aver letto da qualche parte che il caricamento lento dei campi incorporati era nelle specifiche JDO, ma non riesco a trovarlo ora. – Cengiz