我正在使用 Java 和 GAE 数据存储来存储、管理和检索我的应用程序的一些数据。
基本上我有两个类:客户和商店。这个想法是一个客户可以关联多个商店,并且可以存在许多客户。
客户的结构是这样的:
<Customer>
<id>id1</id>
<Stores>
<Store>
<storeId>100</storeId>
<city>Venice</city>
</Store>
<Store>
<storeId>200</storeId>
<city>Milan</city>
</Store>
<Store>
<storeId>300</storeId>
<city>Venice</city>
</Store>
</Stores>
</Customer>
正如我之前所说,可以有很多客户:
<Customers>
<Customer>
...
</Customer>
<Customer>
...
</Customer>
</Customers>
我需要构建一个过滤器以仅获取这些客户中的一部分,将“CITY”参数传递给查询:例如,如果我想向客户展示至少有一家位于威尼斯的商店,我会做类似的事情(只是给你的想法)
GET Customer WHERE Customer.Store.City = 'Venice'
我想得到的是在特定城市拥有商店的每个客户..而且,客户对象需要拥有这些商店!像这样:
<Customer>
<id>id1</id>
<Stores>
<Store>
<storeId>100</storeId>
<city>Venice</city>
</Store>
<Store>
<storeId>300</storeId>
<city>Venice</city>
</Store>
</Stores>
</Customer>
<Customer>
<id>id2</id>
<Stores>
<Store>
<storeId>700</storeId>
<city>Venice</city>
</Store>
</Stores>
</Customer>
我可以正确获得这些商店,但我需要找到一种方法将每家商店与他的祖先客户联系起来。
String city = 'something';
Query query = mgr.newQuery(Store.class, "city == '"+city+"' ");
List<Store> oggetti = (List<Store>) query.execute();
关于如何做到这一点的任何想法?
我希望我足够清楚..提前谢谢,最好的问候
附加信息:
类客户:
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
@Cacheable("false")
@FetchGroup(name="customerstores", members={@Persistent(name="storeList")})
public class Customer {
@PrimaryKey
@Persistent
private String id= "";
@Persistent
@Unowned
private List<Store> storeList;
//getters and setters here
....
}
类商店:
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
@Cacheable("false")
public class Store {
@PrimaryKey
@Persistent
private String storeUniqueKey = "";
@Persistent
private String city = "";
//getters and setters here
....
}