代码之家  ›  专栏  ›  技术社区  ›  Stevko

将appengine数据存储实体转换为我的对象的方法?

  •  5
  • Stevko  · 技术社区  · 16 年前

    使用GoogleAppengine1.3.0W/java和jdo。。。

    不幸的是,查询结果是带有属性列表的“实体”对象。 API中是否有一个util可以将这些实体对象之一转换为我的JDO对象,甚至是一个简单的DTOBean(与我的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() ) );
     }
    
    2 回复  |  直到 16 年前
        1
  •  4
  •   antony.trupe    15 年前

    这不是我认为你在寻找的银弹;这需要一些艰苦的工作才能完成。

    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));
    }
    

    福班

    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();
    }
    
        2
  •  5
  •   maximbr    15 年前

    你可以用 org.datanucleus.store.appengine.JDODatastoreBridge.toJDOResult()