Pregunta

he omitido algún código (declaraciones de paquetes, las importaciones, otros campos) de dificultad. Tengo aquí sencilla relación Uno a Muchos. Funcionó bien hasta este momento.

@PersistenceCapable(identityType = IdentityType.APPLICATION,
detachable="true")
class Restaurant implements Serializable {

 @PrimaryKey
 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
 Key id

 @Persistent(mappedBy = "restaurant")
 List<RestaurantAddress> addresses = new ArrayList<RestaurantAddress>()
}

// - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - =

@PersistenceCapable(identityType = IdentityType.APPLICATION,
detachable="true")
class RestaurantAddress implements Serializable {

 @PrimaryKey
 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
 Key id

 @Persistent
 Restaurant restaurant
}

Ahora tengo que conseguir (seleccionar) todos los restaurantes de DB:

def getRestaurantsToExport(final String dst, final int count) {
   String field = restaurantExportFields[dst]
   return transactionExecute() { PersistenceManager pm ->
     Query q = pm.newQuery(Restaurant.class)
     q.filter = "$field == null"
     q.setRange(0, count)
     return q.execute()
   }
 }

Sin embargo, hay un problema en - consulta me da 12 restaurantes (como en DB), pero Cada restaurante tiene 0 Dirección almacén de datos pero en cada restaurante tiene un mínimo de 2 direcciones.

Tener a todos el mismo problema o sabe la solución?

¿Fue útil?

Solución 2

Si alguien va a tener el mismo problema:

Reemplazar

@Persistent(mappedBy = "restaurant")
 List<RestaurantAddress> addresses = new
ArrayList<RestaurantAddress>

@Persistent(mappedBy = "restaurant",defaultFetchGroup = "true")
 List<RestaurantAddress> addresses = new
ArrayList<RestaurantAddress>

Otro método es que usted tiene que "toque" se ocupa de la propiedad de Cada restaurante en la lista recuperada antes de cerrar PersistentManager. Después PersistenManager que estando cerrado no puede recuperar algo de almacén de datos y el restaurante mantiene nula.

Solución encontrado con ayuda de google-appengine-java usuarios.

Otros consejos

¿está seguro de que las direcciones no son perezosos cargada? Sólo una suposición ... ¿hay alguna manera de forzar una carga "ansiosos" de los objetos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top