【发布时间】:2010-02-18 18:15:42
【问题描述】:
使用 google appengine 1.3.0 w/java 和 jdo...
在尝试为一对多拥有的关系编写 JDO 查询时,我遇到了一个我认为非常聪明的非 JDO 概念。祖先查询。 appengine.api.datastore.Query 接口允许使用父键对查询进行范围界定。
不幸的是,查询的结果是带有属性列表的“实体”对象。 api 中是否有一个工具可以将这些实体对象之一转换为我的 JDO 对象,甚至是一个简单的 DTO bean(与我的 JDO 对象匹配)?
我用下面的代码对它进行了暴力破解,但不喜欢双重查找。
PersistenceManager pm;
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
List<MyObject> results;
com.google.appengine.api.datastore.Query query = new Query( "MyObject", KeyFactory.stringToKey( parentId ) );
query.addFilter("rank", Query.FilterOperator.GREATER_THAN_OR_EQUAL, minRank );
query.addSort("rank");
query.setKeysOnly();
for (Entity anEntity : datastore.prepare(query).asIterable()) {
results.add( pm.getObjectById( MyObject.class, anEntity.getKey() ) );
}
【问题讨论】:
标签: java google-app-engine google-cloud-datastore