datanucleus gae.pk-id未在makepersistent上填充



当我制作一个同时定义" gae.encoded-pk"one_answers" gae.pk-id"的类时,则更新了编码的pk,但ID仍然为null。没有例外,代码是Google文档中的直接复制糊剂,因此我对这里可能发生的事情感到不知所措。

类定义:

@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;

,我这样坚持不懈:

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

我正在使用调试器逐步浏览此代码,但是即使关闭了持久性管理器,keyID仍保持无效。

我还应该指出,这是使用Google Appengine Development套件在本地运行的。关于我如何调试的任何指示,这将不胜感激!

我找到了这个答案:

GAE JDO插件仅设置一个" Gae.pk-id"/" Gae.pk-name"字段,当它在数据存储中标记的字段中读取时(只需在SVN TRUNK中进行搜索,fetchfieldmanager,fetchfieldmanager就是唯一加载它的地方 - 当它做一个放置时,它不会设置它)。不知道它在1.x中做了什么,但是GAE自己的所有测试都像1.x一样通过2.x。但是,无论如何,"功能"并不是标准的JDO,所以对我来说一点也不感兴趣。

请参阅:无法使用GAE/J Datanucleus插件版本2.1.2

获得新创建的JDO持久实体的ID

最新更新