Datanucleus GAE 拥有的关系不起作用

Posted

技术标签:

【中文标题】Datanucleus GAE 拥有的关系不起作用【英文标题】:Datanucleus GAE owned relationship not working 【发布时间】:2018-06-15 09:03:40 【问题描述】:

在按照https://cloud.google.com/appengine/docs/standard/java/tools/migrate-maven 中描述的指南将项目迁移到云 sdk 时,我不得不升级一些 DataNucleus 依赖项,这似乎导致了问题。 DataNucleus 不会为数据持久化预迁移正确加载单向拥有的单对多关系。获取关系返回 null。数据的持久化方式似乎发生了某种变化。

如果我持久化一个新实体,则会在表中添加一列,其中包含关系信息。获取这些新持久化的实体之一,会给出正确的结果。

是否可以在不迁移数据的情况下升级 DataNucleus 版本?是否需要特定的注释或什么?

迁移前使用的 jars:

datanucleus-jpa-1.1.5 datanucleus-core-1.1.5 datanucleus-appengine-1.0.10.final

现在使用的依赖:

<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-core</artifactId>
    <version>3.1.3</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.datanucleus</groupId>
    <artifactId>datanucleus-api-jdo</artifactId>
    <version>3.1.3</version>
</dependency>
<dependency>
    <groupId>com.google.appengine.orm</groupId>
    <artifactId>datanucleus-appengine</artifactId>
    <version>2.1.2</version>
</dependency>

关系码sn-p:

@Persistent(defaultFetchGroup="true", dependentElement="true")
@Extension(vendorName="datanucleus", key="comparator-name", 
value="be.coco.shared.quantity.Quantity")
private SortedSet<Quantity> quantities = new TreeSet<Quantity>();

【问题讨论】:

【参考方案1】:

我在 Google 问题跟踪器中找到了您的 issue。您观察到的故障很可能与 datanucleus-appengine 的兼容性问题有关。正如 Google 问题跟踪器中的答案所述:

(...),建议改为遵循相应的 DataNucleus 特定的Maven documentation 以获得持续的 DataNucleus 支持。

【讨论】:

以上是关于Datanucleus GAE 拥有的关系不起作用的主要内容,如果未能解决你的问题,请参考以下文章

仅从 Laravel 5.2 关系查询中选择特定列不起作用 [重复]

未找到类 org.datanucleus.api.jdo.PersistenceManagerFactoryClass

GAE 裸到 www 自定义域映射不起作用

GAE Java 自动缩放最小空闲实例不起作用?

带有 GAE 的 Yaml 寻址和模板不起作用? TemplateDoesNotExist 只需简单地更改 yaml ?

在 GAE 中使用任务队列插入批量数据