ArrayList不想在AppEngine HR数据库上持久化,如何解决?

时间:2011-10-21 07:50:58

标签: java google-app-engine jdo datanucleus

我试图坚持和ArrayList,但它不起作用。一切 本地很好[M / S db],但是当我部署它[HR]时,对象就可以了 不坚持有什么想法吗?这真的很奇怪,我找不到任何东西 溶液

我使用JDO和DataNucleus以及Guice进行注射,这里是必需的代码:

@Persistent(defaultFetchGroup = "true", serialized="true")
private ArrayList<ArrayList<Long>> colonisations = new
ArrayList<ArrayList<Long>>();
用户类

另一个试图保留数据的类:

@Inject
public Repository<User> userRepo;

...
...
MySession.get().getUser().getColonisations().add(colonisation);
...
...
Colonisation.this.userRepo.persist(MySession.get().getUser()); 

我从日志中获得的唯一提示是:

org.datanucleus.ObjectManagerImpl close:杰出的nontx更新 致力于数据存储

2 个答案:

答案 0 :(得分:1)

你是否在持续时使用currentTransaction?

我希望我有更多关于此的信息,但我遇到了类似的问题,同时在GAE中使用JDO持久化并从datanucleus中检索,我发现在我使用时

persistenceManager.currentTransaction().begin();
// persist and/or retrieve
persistenceManager.currentTransaction().commit();

我没有任何问题。

我希望我有所帮助。

答案 1 :(得分:0)

使字段变脏可以解决问题,因此DataNucleus发现它已被更改。

JDOHelper.makeDirty(...)