BlackBerry 持久对象/存储细微差别问题

标签 blackberry object-persistence persistent-storage

我正在使用 PS 在我的应用程序中存储数据。我想我对PS的工作原理有误解。如果有人能告诉我如何使我从 PS 检索到的账单不加密,而不是我最终得到的加密账单?注意:我最初存储并未加密账单!

据我所知,它认为两个账单和两个 PO 对象是相同的对象!当我在 Eclispe 中查看它们的内存位置时,bill 和 PO 对象都具有相同的内存位置!我错过了什么?

谢谢!

    //create an unencrypted bill
    BillDAO testBill = new BillDAO();

    //store it in PS
    PersistentObject po = PersistentStore.getPersistentObject(4);
    po.setContents(testBill);
    po.forceCommit();

    //encrypt the bill
    testBill.encrypt();

    //retrieve it from PS using a different PO
    PersistentObject po2 = PersistentStore.getPersistentObject(4);
    BillDAO retrievedBill = (BillDAO) po2.getContents();

    //and now for some reason my retrieved bill is encrypted!
    //it should be unencrypted

最佳答案

这两个对象(在 PS 中和在 RAM 中)是链接的,因此对一个对象的更改会反射(reflect)另一个对象。请参阅 Mike Kirkup 对 this thread 的回复在 BB 论坛上,具体来说:

您应该只调用 setContents() 一次。这会在您第一次添加数据时发生。对于每个后续调用,您应该调用 getContents(),然后直接修改该对象。 通过直接修改对象,您可以在工作结束时调用 commit,系统将正确提交您的更改...

此外,您可能想查看他对 key 生成的建议:)

希望这有帮助!

关于BlackBerry 持久对象/存储细微差别问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2515082/

相关文章:

java - 将数据库中的多个值添加到 Rich List Blackberry

印度的黑莓 map

c# - DynamoDB 和 .NET 对象持久性模型,使用 'ADD' 值而不是覆盖

php - 在领域驱动设计中,存储库模式是否维护对对象的引用?

java - Wildfly 8.0 服务器中的 JMS 消息持久化

kubernetes - 如何在 Pod 之间共享单个可写文件,与不可共享文件位于同一目录中(可写配置映射)

java - 如何在黑莓中导入 Java 插件中的项目

java - 以编程方式将 PIN 联系人添加到 BBM

android - 在 android Application 类中保持状态

iphone - 更新应用程序后,uitableview 中的数据不会被删除