Java GAE数据存储加入+分组依据
注意:我已经看到了加入GAE相关的帖子,但在我的 要求让我做了一个新的职位,我已经做了自己的解决方案,我想看看它有多好 数据存储实体属性和数据库类型 实体:PartyEntity让我们称之为 字符串partyName 字符串partyId 布洛基图像 实体:InsertEntity将其称为b 字符串partyIdentifier 字符串名 连续选区 客观的 从a.partyId=b.partyIdentifier组的b.b.选区上的加入b中选择*; 下面我将回答我的问题,代码运行良好,建议我任何更改或更好的方法我只是一名学生我的解决方案如下,建议任何更改或更好的方法 //从PartyEntity保存唯一partyId中选择* 对于每个partyId,从b中选择* //按选区分组条款部分Java GAE数据存储加入+分组依据,java,google-cloud-datastore,Java,Google Cloud Datastore,注意:我已经看到了加入GAE相关的帖子,但在我的 要求让我做了一个新的职位,我已经做了自己的解决方案,我想看看它有多好 数据存储实体属性和数据库类型 实体:PartyEntity让我们称之为 字符串partyName 字符串partyId 布洛基图像 实体:InsertEntity将其称为b 字符串partyIdentifier 字符串名 连续选区 客观的 从a.partyId=b.partyIdentifier组的b.b.选区上的加入b中选择*; 下面我将回答我的问题,代码运行良好,建议我任何
如果您有工作代码,您可能希望将其发布到code Review,而不是StackOverflow@AndyG我现在如何移动它?
private List<ListDisplay> initData() {
DatastoreService datastore = DatastoreServiceFactory
.getDatastoreService();
List<ListDisplay> data = new ArrayList<ListDisplay>();
Query query = new Query("PartyEntity");
PreparedQuery preparedQuery = datastore.prepare(query);
List<Entity> entities = preparedQuery.asList(FetchOptions.Builder
.withDefaults());
for (Entity entity : entities) {
String PARTY_ID = (String) entity.getProperty("partyId");
// fetch from another
Query query2 = new Query("InsertEntity");
Filter filterByPartyId = new Query.FilterPredicate(
"partyIdentifier", FilterOperator.EQUAL, PARTY_ID);
query2.setFilter(filterByPartyId);
PreparedQuery preparedQuery2 = datastore.prepare(query2);
List<Entity> entities2 = preparedQuery2.asList(FetchOptions.Builder
.withDefaults());
for (Entity entity2 : entities2) {
ListDisplay display = new ListDisplay();
display.setPartyId((String) entity.getProperty("partyId"));
display.setPartyName((String) entity.getProperty("partyName"));
display.setImage((BlobKey) entity.getProperty("image"));
display.setName((String) entity2.getProperty("name"));
display.setConstituency((String) entity2
.getProperty("constituency"));
data.add(display);
} // end loop entity2
} // end loop entity
return data;
}
public HashMap<String, List<ListDisplay>> getData() {
HashMap<String, List<ListDisplay>> data = new HashMap<>();
List<ListDisplay> list = initData();
for (ListDisplay d : list) {
// if null add
if (data.get(d.getConstituency()) == null) {
List<ListDisplay> internal = new ArrayList<>();
internal.add(d);
data.put(d.getConstituency(), internal);
}
// else modify
else {
List<ListDisplay> hashlist = data.get(d.getConstituency());
hashlist.add(d);
data.remove(d.getConstituency());
data.put(d.getConstituency(), hashlist);
}
}
return data;
}