我正在使用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
答案 0 :(得分:3)
两个对象(在PS和RAM中)是链接的,因此更改为一个反映在另一个上。请参阅Mike Kirkup对BB论坛上this thread的回复,具体如下:
你应该只调用一次setContents()。这将在您第一次添加数据时发生。对于每个后续调用,您应该调用getContents()然后直接修改该对象。 通过直接修改对象,然后在工作结束时调用commit,系统将正确提交更改...
此外,您可能想要查看他的密钥生成建议:)
希望这有帮助!