0

我的一个 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”注释和/或如何解决这个问题?

谢谢!

4

3 回答 3

1

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

@PersistenceCapable(identityType = IdentityType.APPLICATION, 可拆卸 = "true")
类Foo {
   ...
   @Persistent(types={java.lang.Boolean.class, java.lang.String.class})
   对象栏;
   ...
}
于 2009-12-09T04:00:42.687 回答
0

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

——安迪(数据

于 2009-12-08T10:34:09.697 回答
0

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

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

附录,似乎@Value 也仅用于地图。

于 2009-12-08T09:50:18.593 回答