Ste*_*vko 5 java google-app-engine google-cloud-datastore
使用google appengine 1.3.0 w/java和jdo ...
在尝试为一对多拥有的关系编写JDO查询时,我遇到了一个我认为非常聪明的非JDO概念.祖先Querys.appengine.api.datastore.Query接口允许使用父键确定查询范围.
不幸的是,查询的结果是带有属性列表的"实体"对象.apis中是否有一个util会将其中一个Entity对象转换为我的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() ) );
}
Run Code Online (Sandbox Code Playgroud)
我认为这不是您正在寻找的灵丹妙药;它需要一些繁重的工作才能完成。
DAO代码
DatastoreService datastore = DatastoreServiceFactory
.getDatastoreService();
List<Foo> results = new ArrayList<Foo>();
Query query = new Query("Foo", KeyFactory.stringToKey(""));
List<Entity> entities = datastore.prepare(query).asList(
FetchOptions.Builder.withDefaults());
for (Entity entity : entities) {
results.add(new Foo(entity));
}
Run Code Online (Sandbox Code Playgroud)
类 Foo
public Foo(Entity entity) {
// TODO get properties from entity and populate POJO
this.bar=entity.getProperty("bar");
//get the key
//if the @PrimaryKey is a Long use this
this.id=entity.getKey().getId();
//if the @PrimaryKey is a String use this
this.id=entity.getKey().getName();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3166 次 |
| 最近记录: |