我省略一些代码(包声明,进口,其他字段) 对于急促。 我这里简单的一对多关系。 它工作得很好,直到这一刻。

@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
}

现在我需要获得(选择)从数据库中的所有的餐馆:

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()
   }
 }

但也有问题 - 查询给我12家餐馆(如数据库),但 每家餐厅都有0地址,但在数据存储每个餐厅都有 最小2个地址。

有任何人同样的问题或知道解决?

有帮助吗?

解决方案 2

如果有人将具有相同的问题:

<强>替换

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

<强>与

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

<强>另一种方法是,你必须“触摸”为地址属性 在检索到的列表中的每个餐厅关闭之前 PersistentManager。 PersistenManager被关闭之后,你不能 从数据存储检索任何东西,餐厅保持空。

解决方案发现与谷歌应用服务引擎-java的用户。

其他提示

你确定的地址是不是延迟加载?只是一个猜测...是有一些方法来强制对象的“渴望”装载

scroll top