【问题标题】:a way to convert appengine datastore Entity to my object?一种将 appengine 数据存储实体转换为我的对象的方法?
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这不是我认为您正在寻找的灵丹妙药;它需要一些繁重的工作才能完成。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-11
        • 2021-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        相关资源
        最近更新 更多