一到一对多的关系。从数据存储选择对象
-
19-09-2019 - |
题
我省略一些代码(包声明,进口,其他字段) 对于急促。 我这里简单的一对多关系。 它工作得很好,直到这一刻。
@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的帮助>用户。
其他提示
你确定的地址是不是延迟加载?只是一个猜测...是有一些方法来强制对象的“渴望”装载
不隶属于 StackOverflow