【问题标题】:Does Google App Engine supports JDO data objects with "Object" fields?Google App Engine 是否支持带有“对象”字段的 JDO 数据对象?
【发布时间】:2010-12-24 08:42:46
【问题描述】:

我的一个 JDO 类中有一个“对象”字段,如下所示:

@PersistenceCapable(identityType = IdentityType.APPLICATION, 可拆卸 = "true") 类Foo { ... @执着的 @Value(types={java.lang.Boolean.class, java.lang.String.class}) 对象栏; ... }

当我试图访问这个字段时,我得到了以下异常:

字段“Foo.bar”被声明为参考 类型(接口/对象)但没有找到“java.lang.Object”的实现类! org.datanucleus.exceptions.NucleusUserException:字段“Foo.bar”被声明为引用类型(接口/对象),但没有“java.lan”的实现类 g.Object”已找到! 在 org.datanucleus.metadata.MetaDataUtils.getImplementationNamesForReferenceField(MetaDataUtils.java:531) 在 org.datanucleus.store.mapped.mapping.ReferenceMapping.createPerImplementationColumnsForReferenceField(重新 ferenceMapping.java:279) 在 org.datanucleus.store.mapped.mapping.ReferenceMapping.prepareDatastoreMapping(ReferenceMapping.java:205) 在 org.datanucleus.store.mapped.mapping.ReferenceMapping.initialize(ReferenceMapping.java:114) 在 org.datanucleus.store.mapped.mapping.MappingFactory.createMapping(MappingFactory.java:97) 在 org.datanucleus.store.mapped.mapping.AbstractMappingManager.getMapping(AbstractMappingManager.java:248) 在 org.datanucleus.store.appengine.DatastoreTable.initializeNonPK(DatastoreTable.java:301) 在 org.datanucleus.store.appengine.DatastoreTable.buildMapping(DatastoreTable.java:276) 在 org.datanucleus.store.appengine.DatastoreManager.newStoreData(DatastoreManager.java:329) 在 org.datanucleus.store.AbstractStoreManager.addClasses(AbstractStoreManager.java:788) 在 org.datanucleus.store.AbstractStoreManager.addClass(AbstractStoreManager.java:759) 在 org.datanucleus.store.mapped.MappedStoreManager.getDatastoreClass(MappedStoreManager.java:358) 在 org.datanucleus.store.appengine.DatastoreManager.getDatastoreClass(DatastoreManager.java:555) 在 org.datanucleus.store.appengine.query.DatastoreQuery.performExecute(DatastoreQuery.java:200) 在 org.datanucleus.store.appengine.query.JDOQLQuery.performExecute(JDOQLQuery.java:84) 在 org.datanucleus.store.query.Query.executeQuery(Query.java:1489) 在 org.datanucleus.store.query.Query.executeWithArray(Query.java:1371) 在 org.datanucleus.store.query.Query.execute(Query.java:1344) 在 org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:221)

有谁知道 Google App Engine 是否支持“@Value”注释和/或如何解决这个问题?

谢谢!

【问题讨论】:

    标签: google-app-engine jdo


    【解决方案1】:

    谢谢!而不是使用@Value,我应该这样做:

    @PersistenceCapable(identityType = IdentityType.APPLICATION, 可拆卸 = "true") 类Foo { ... @Persistent(types={java.lang.Boolean.class, java.lang.String.class}) 对象栏; ... }

    【讨论】:

      【解决方案2】:

      如果使用 Object 类型的字段,则 DN 文档中的页面为 http://www.datanucleus.org/products/accessplatform_1_1/jdo/orm/objects.html RDBMS、XML、LDAP、ODBMS 等数据存储明确支持这一点。我不知道 Google 的 BigTable 插件是否支持它。也许如果您发布该异常的堆栈跟踪,您可以向人们展示它的来源......

      --安迪 (DataNucleus)

      【讨论】:

        【解决方案3】:

        根据他们的页面,Google App-Engine 使用 DataNucleus 来支持其 JDO。在 DataNucleus 的网站上,似乎支持 @Value 注释,但在 'type' 属性上显示“虽然该属性允许多个值,但 DataNucleus 目前仅支持第一个类型值”

        http://www.datanucleus.org/products/accessplatform_1_1/jdo/annotations.html#Value

        附录,@Value 好像也只用于地图。

        【讨论】:

          猜你喜欢
          • 2011-06-05
          • 2012-06-14
          • 1970-01-01
          • 2012-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-06
          • 1970-01-01
          相关资源
          最近更新 更多