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

时间:2010-03-25 11:42:16

标签: blackberry object-persistence persistent-storage

我正在使用PS在我的应用中存储数据。我想我对PS的运作方式有误解。如果有人能告诉我如何制作它,以便我从PS检索的账单是未加密的,而不是加密的账单我最终?注意:我最初存储和未加密的账单!

据我所知,它既考虑了票据,又考虑了两个PO对象是同一个对象!当我在Eclispe中查看他们的内存位置时,账单和两个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

1 个答案:

答案 0 :(得分:3)

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

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

此外,您可能想要查看他的密钥生成建议:)

希望这有帮助!