【问题标题】:JDO - List of Strings not being retrieved from databaseJDO - 未从数据库中检索的字符串列表
【发布时间】:2010-02-11 17:37:44
【问题描述】:

在我的 User 类中,我有一个字段是字符串列表:

@Persistent
private List<String> openIds;

当我创建一个新用户时,我会这样做:

User user = new User();
user.openIds.add(openid);
pm.makePersistent(user);

当我在最后一行之后中断并查看时,openIds 包含我放在那里的 openid。 但是,当我稍后使用正确的 id 调用 User user = pm.getObjectById(User.class, id); 时,openIds 字段是一个空列表。

有人知道是什么原因造成的吗?

编辑:顺便说一句,我在 Google App Engine 上运行

更新:查看数据存储查看器,我可以看到 openid 已正确存储在数据库中。所以它只是没有正确地把它弄出来......

更新 2:它现在工作正常。我很确定我没有改变任何东西。我认为一定是从数据库中提取了旧版本的用户对象。在我拥有保存 openid 的代码之前放入的用户对象。擦除数据库后,一切正常。

【问题讨论】:

    标签: java persistence jdo


    【解决方案1】:

    没有将该字段放入获取计划中? 直接访问持久化字段,而不是通过设置器?

    【讨论】:

    • 我是否需要将它添加到默认提取计划中,即使它只是一个字符串列表?
    • 你的意思是“只是一个字符串列表”,它在 DFG 中不是默认的?
    • 对结果如何感兴趣,因为我遇到了同样的问题。我无法修改数据存储中的列表,因为它为空。我尝试将 fetchSize 设置为 3,但没有用。如果有人有时间做一个全面的例子,那就太好了..
    • 将 fetchSize 设置为 3 是没有用的,因为它用于其他用途。我说将字段放入获取计划中,默认情况下它不是
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多