Estoy utilizando la versión de desarrollo local de la implementación JDO de App Engine. Cuando consulto un objeto que contiene otros objetos como campos incrustados, los campos incrustados se devuelven como nulos.El campo JDO incrustado no se recupera mediante la consulta
Por ejemplo, digamos que este es el objetivo principal que estoy persistiendo:
@PersistenceCapable
public class Branch {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String name;
@Persistent
private Address address;
...
}
y esto mi objeto incrustado:
@PersistenceCapable(embeddedOnly="true")
public class Address {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String street;
@Persistent
private String city;
...
}
el siguiente código no recupera el objeto incrustado:
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();
}
¿Alguien tiene una solución para esto? ¿Cómo puedo recuperar el objeto Branch junto con su campo Address incrustado?
¡Gracias por la pronta respuesta! Voy a probar esto y te dejaré saber si funciona. – Chania
Si un campo está en el grupo de búsqueda activo, obviamente debe ser recuperado. Si dices que no es así, ¿por qué no proporcionas un caso de prueba simple y lo informas en http://code.google.com/p/datanucleus-appengine/issues/list No informarlo probablemente significa que nadie involucrado en el proyecto sabrá al respecto – DataNucleus
No estoy seguro de si esto es un error o una parte de la especificación JDO. Recuerdo haber leído en alguna parte que la carga lenta de campos incrustados estaba en las especificaciones JDO, pero no puedo encontrarlo ahora. – Cengiz