Datanucleus GAE拥有的关系不起作用

时间:2018-06-15 09:03:41

标签: google-app-engine datanucleus

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

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

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

Jars使用了预迁移:

  • DataNucleus将-JPA-1.1.5
  • DataNucleus将核-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>

Relationship code snippet:

@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 个答案:

答案 0 :(得分:0)

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

  

(...),建议改为遵循相应的DataNucleus   具体Maven documentation用于继续DataNucleus支持。