2013-04-24 26 views
1

目前我正在一个小项目,涉及GAE使用JDO,但我似乎有问题持续更新的数据 - 奇怪的是它在本地工作,但不是部署的应用程序版本。 更新是非常简单的:GAE持续的价值没有更新部署的应用程序,但本地

update(Foo newBar) { 
    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    Transaction trans = pm.currentTransaction(); 
    trans.begin(); 
    Foo bar = pm.getObjectById(Foo.class, "someId"); 
    bar.baz = newBar.baz; 
    pm.makePersistent(bar); 
    trans.commit(); 
    pm.close(); 
} 

有什么我错过这里?

+0

它是如何不起作用呢? – dragonx 2013-04-24 23:09:19

+0

第一次'酒吧'是持续的,但它的价值,保持不变,每次连续的呼叫。 但是在本地执行,'bar'会在每次调用时更新并保持正确。 – hanneswurstes 2013-04-25 05:56:23

回答

2

直接更新公共字段?噢亲爱的。没有持久性机制有希望知道你更新了该领域,如果你这样做。使用setter,或者像@PersistenceAware一样增强更新类。

日志的检查就会发现很多东西,喜欢makePersistent这个这一呼吁是没有价值

+0

检查日志没有透露任何问题,因为我说它在本地工作,并且该对象被标记为肮脏,并且makePersistent调用按预期工作。 但是使用setter取得了诀窍。非常感谢!!我应该了解DataNucleus的持久性机制如何工作...... 只是出于好奇,你有什么想法还有什么可能是本地和部署行为之间存在差异的原因? – hanneswurstes 2013-04-25 16:55:37

相关问题