小编use*_*588的帖子

在makePersistent上没有填充Datanucleus gae.pk-id

当我创建一个定义"gae.encoded-pk"和"gae.pk-id"持久化的类时,encoded-pk会更新,但id仍然为null.没有例外被抛出,代码是谷歌文档中的直接复制粘贴,所以我对这里可能发生的事情感到茫然.

该类定义:

@PersistenceCapable 
public class MyClass {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    @Extension(vendorName="datanucleus", key="gae.encoded-pk", value="true")
    private String encodedKey;

    @Persistent
    @Extension(vendorName="datanucleus", key="gae.pk-id", value="true")
    private Long keyId;
Run Code Online (Sandbox Code Playgroud)

而且我坚持这样:

PersistenceManager pm = PMF.get().getPersistenceManager();
try {
    pm.makePersistent(myInstance);
    // myInstance = pm.makePersistent(myInstance); - Produces the same result.
} finally {
    pm.close();
}
Run Code Online (Sandbox Code Playgroud)

我正在使用调试器来逐步执行此代码,但即使在关闭持久性管理器之后,keyId仍为null.

我还应该指出,这是使用google appengine开发工具包在本地运行的.关于我如何调试这个的任何指针将不胜感激!

google-app-engine jdo datanucleus google-cloud-datastore

5
推荐指数
1
解决办法
175
查看次数