我不知道发生了什么,但我的项目突然开始抛出错误:
类 util.endpoints.ListWrapper 具有应用程序标识,并且未指定 objectid-class,但有 0 个主键字段。无法使用 SingleFieldIdentity。
这只是随机开始发生的,我正在运行 1.8.9 并使用端点。我已经清理、重新启动等无济于事,这对我来说似乎是端点的问题。完整的堆栈跟踪是:
DataNucleus Enhancer (version 3.1.1) : Enhancement of classes
Feb 01, 2014 8:06:13 AM org.datanucleus.metadata.AbstractClassMetaData determineObjectIdClass
SEVERE: Class util.endpoints.ListWrapper has application-identity and no objectid-class specified yet has 0 primary key fields. Unable to use SingleFieldIdentity.
Class util.endpoints.ListWrapper has application-identity and no objectid-class specified yet has 0 primary key fields. Unable to use SingleFieldIdentity.
Feb 01, 2014 8:06:13 AM org.datanucleus.enhancer.DataNucleusEnhancer main
DataNucleus Enhancer completed with an error. Please review the enhancer log for full details. Some classes may have been enhanced but some caused errors
SEVERE: DataNucleus Enhancer completed with an error. Please review the enhancer log for full details. Some classes may have been enhanced but some caused errors
Class util.endpoints.ListWrapper has application-identity and no objectid-class specified yet has 0 primary key fields. Unable to use SingleFieldIdentity.
org.datanucleus.metadata.InvalidClassMetaDataException:类 util.endpoints.ListWrapper 具有应用程序标识,但尚未指定 objectid-class 有 0 个主键字段。无法使用 SingleFieldIdentity。 在 org.datanucleus.metadata.AbstractClassMetaData.defineObjectIdClass(AbstractClassMetaData.java:1355) 在 org.datanucleus.metadata.ClassMetaData.populate(ClassMetaData.java:209) 在 org.datanucleus.metadata.MetaDataManager$1.run(MetaDataManager.java:2699) 在 java.security.AccessController.doPrivileged( native 方法) 在 org.datanucleus.metadata.MetaDataManager.populateAbstractClassMetaData(MetaDataManager.java:2693) 在 org.datanucleus.metadata.MetaDataManager.populateFileMetaData(MetaDataManager.java:2516) 在 org.datanucleus.metadata.MetaDataManager.initialiseFileMetaDataForUse(MetaDataManager.java:1123) 在 org.datanucleus.metadata.MetaDataManager.loadClasses(MetaDataManager.java:543) 在 org.datanucleus.enhancer.DataNucleusEnhancer.getFileMetadataForInput(DataNucleusEnhancer.java:734) 在org.datanucleus.enhancer.DataNucleusEnhancer.enhance(DataNucleusEnhancer.java:525) 在 org.datanucleus.enhancer.DataNucleusEnhancer.main(DataNucleusEnhancer.java:1258) 在 sun.reflect.NativeMethodAccessorImpl.invoke0( native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 com.google.appengine.tools.enhancer.Enhancer.execute(Enhancer.java:74) 位于 com.google.appengine.tools.enhancer.Enhance。(Enhance.java:71) 在 com.google.appengine.tools.enhancer.Enhance.main(Enhance.java:51)
最佳答案
为了解决这个问题,我在 App Engine 下使用 ORM 选项时取消选中了 src 目录。菜单路径是 Google > App Engine > ORM。我将所有数据类都放在一处,因此我只包含此路径,而不是默认的 src 文件夹。结果是 datanucleus 增强器不再在端点类上运行。
我确实认为目前导致此问题的是端点的错误,但希望这可以帮助人们找到解决方法。
关于java - App Engine Datanucleus 不会增强抛出 : util. 端点。ListWrapper 具有应用程序身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21500646/