如何使用Java从Google App Engine数据存储区中的实体提取属性

PGMacDesign

我正在使用Google App Engine,并尝试从数据存储区查询/提取数据。我遵循了将近20种不同的教程,但没有任何运气。

这是我的数据存储区以及存储在其中的各个示例数据的图片:

在此处输入图片说明

这是我必须提取数据的一些代码:

//To obtain the keys
final DatastoreService dss=DatastoreServiceFactory.getDatastoreService();
final Query query=new Query("Coupon");
List<Key> keys = new ArrayList<Key>();

//Put the keys into a list for iteration
for (final Entity entity : dss.prepare(query).asIterable(FetchOptions.Builder.withLimit(100000))) {
    keys.add(entity.getKey());
}

try {
    for (int i = 0; i < keys.size(); i++){
        Entity myEntity = new Entity("Coupon", keys.get(i));

        System.out.println("Size of the Keys array = " + keys.size());

        String description = (String) myEntity.getProperty("desc");

        String endDate = (String) myEntity.getProperty("endDate");

        System.out.println("Description = " + description);
        System.out.println("End Date: " + endDate);

        //Map here is empty...
        Map<String, Object> test = myEntity.getProperties();

        System.out.println("MAP SIZE = " + test.size());        
    }
} catch (Exception e){
    e.printStackTrace();
}

    **OUPUT:** 
    Size of the Keys array = 2
    Description = null
    End date = null
    MAP SIZE = 0

我不知道为什么说明和结束日期为空。大小显示为2时,显然是在拉进正确的Entity,与显示的图片匹配。另外,当我打印出键时,它也匹配

(这样的事情:对于keys.get(i).toString();-实体[!global:Coupon(123)/ Coupon(no-id-yet)] :.或:密钥字符串=!global:Coupon (5730827476402176)

我已尽力遵循了文档(此处)和一些示例(此处),但似乎无法弄清楚。在拥有实体后不返回空值的情况下,是否有人对如何从实体获取属性有任何建议或经验?

我经历了以下Stackoverflow问题,但均未获得任何成功,因此请不要在其上使用简单的重复问号来结束此问题:1)如何获取Google App Engine(低级API)中的所有子实体2)存储分层数据在Google App Engine数据存储区中?3)如何使用Java使用Google App Engine数据存储区中的列表属性?4)Google App Engine数据存储区中的批量更新5)检查实体在Google App Engine数据存储区中是否存在实体。

PGMacDesign

尤里卡!非常感谢所有回答。Patriceuser2649908特别感谢您,因为您带我找到了答案。

因此,Patrice是完全正确的,因为我正在查询以获取密钥,构建新实体,然后尝试解析新创建的(空)实体。

解决方案是利用PersistenceManager解析数据,然后使用getter / accessor方法进行解析。持久性管理器的链接(我或多或少只是从它的完美复制中直接复制了)在这里:如何使用JDO持久性管理器?

设置持久性管理器后,便可以使用以下代码来获取数据:

try {
            for (int i = 0; i < keys.size(); i++){

                //See the link for How to use JDO persistence manager on how to use this
                PersistenceManager pm = MyPersistenceManagerClass.getPM();

                //Need to cast it here because it returns an object
                Coupon coupon = (Coupon) pm.getObjectById(Coupon.class, keys.get(i));

                System.out.println("Created by = " + coupon.getCreatedBy());

                System.out.println("Description = " + coupon.getDesc());

                System.out.println("Modified by = " + coupon.getModifiedBy());
            }
        } catch (Exception e){
            e.printStackTrace();
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google App Engine数据存储区按属性删除实体

来自分类Dev

如何从Google App Engine(Java)数据存储区中的子实体查询父实体?

来自分类Dev

Google App Engine数据存储区如何获取Key <?>的实体

来自分类Dev

覆盖Google App Engine- Java中的数据存储区实体

来自分类Dev

Google App Engine(Python)-数据存储区正在复制实体

来自分类Dev

查询所有实体的Google App Engine数据存储区

来自分类Dev

列出Google App Engine数据存储区中的所有实体时出现AttributeError

来自分类Dev

如何从App-Engine数据存储区实体类型中获取最新的25个条目

来自分类Dev

如何在Google App Engine数据存储区中添加动态属性

来自分类Dev

使用Java随机查询Google App Engine数据存储区实体

来自分类Dev

App Engine数据存储区:如何批量删除本地主机上的数据存储区实体?

来自分类Dev

在不初始化特定属性的情况下创建Google App Engine数据存储区实体

来自分类Dev

如何使用64位无符号整数作为App Engine数据存储区中的实体键并保留排序顺序?

来自分类Dev

如何使App Engine从数据存储区而不是内存缓存中检索属性值?

来自分类Dev

如何使用Google数据存储在Google App Engine中动态创建多个实体(Python)

来自分类Dev

Google App Engine转到数据存储区,使用键检查实体是否存在

来自分类Dev

Google App Engine中的数据存储区与Cloud SQL

来自分类Dev

Google App Engine数据存储区中的多线程

来自分类Dev

Google App Engine:根据发布数据创建数据存储区实体

来自分类Dev

Google App Engine数据存储区重新索引现有实体

来自分类Dev

Google App Engine NDB数据存储区get_by_id以获取实体

来自分类Dev

为什么我的Google App Engine数据存储区实体在删除后会重新出现?

来自分类Dev

Google App Engine数据存储区的大表是如何设计的?

来自分类Dev

在Google App Engine中,如何在更新SDK之后使开发数据存储区保持可用状态?

来自分类Dev

使用Java为App Engine数据存储区设置游标

来自分类Dev

如何在Google App Engine数据存储区中存储来自Android的用户特定数据。祖先与否?

来自分类Dev

如何在Google App Engine数据存储区中存储来自Android的用户特定数据。祖先与否?

来自分类Dev

Google App Engine数据存储区查询返回陈旧数据

来自分类Dev

Google App Engine数据存储区实体设计,可最大程度地降低成本并提高性能

Related 相关文章

  1. 1

    Google App Engine数据存储区按属性删除实体

  2. 2

    如何从Google App Engine(Java)数据存储区中的子实体查询父实体?

  3. 3

    Google App Engine数据存储区如何获取Key <?>的实体

  4. 4

    覆盖Google App Engine- Java中的数据存储区实体

  5. 5

    Google App Engine(Python)-数据存储区正在复制实体

  6. 6

    查询所有实体的Google App Engine数据存储区

  7. 7

    列出Google App Engine数据存储区中的所有实体时出现AttributeError

  8. 8

    如何从App-Engine数据存储区实体类型中获取最新的25个条目

  9. 9

    如何在Google App Engine数据存储区中添加动态属性

  10. 10

    使用Java随机查询Google App Engine数据存储区实体

  11. 11

    App Engine数据存储区:如何批量删除本地主机上的数据存储区实体?

  12. 12

    在不初始化特定属性的情况下创建Google App Engine数据存储区实体

  13. 13

    如何使用64位无符号整数作为App Engine数据存储区中的实体键并保留排序顺序?

  14. 14

    如何使App Engine从数据存储区而不是内存缓存中检索属性值?

  15. 15

    如何使用Google数据存储在Google App Engine中动态创建多个实体(Python)

  16. 16

    Google App Engine转到数据存储区,使用键检查实体是否存在

  17. 17

    Google App Engine中的数据存储区与Cloud SQL

  18. 18

    Google App Engine数据存储区中的多线程

  19. 19

    Google App Engine:根据发布数据创建数据存储区实体

  20. 20

    Google App Engine数据存储区重新索引现有实体

  21. 21

    Google App Engine NDB数据存储区get_by_id以获取实体

  22. 22

    为什么我的Google App Engine数据存储区实体在删除后会重新出现?

  23. 23

    Google App Engine数据存储区的大表是如何设计的?

  24. 24

    在Google App Engine中,如何在更新SDK之后使开发数据存储区保持可用状态?

  25. 25

    使用Java为App Engine数据存储区设置游标

  26. 26

    如何在Google App Engine数据存储区中存储来自Android的用户特定数据。祖先与否?

  27. 27

    如何在Google App Engine数据存储区中存储来自Android的用户特定数据。祖先与否?

  28. 28

    Google App Engine数据存储区查询返回陈旧数据

  29. 29

    Google App Engine数据存储区实体设计,可最大程度地降低成本并提高性能

热门标签

归档