【发布时间】:2014-03-27 17:38:25
【问题描述】:
我有一个继承自 Page 类的 User 类。在事务中,我希望通过 ID 加载用户实体(从不同的实体获得),但我得到了由 UnsupportedOperationException 引起的 LoadException。我正在使用 objectify 4.0-rc2。
User user = MyObjectifyService.ofy().load().type(User.class).id(info.user).now();
例外是:
com.googlecode.objectify.LoadException: Error loading Page(5629499534213120): null
at com.googlecode.objectify.impl.Transmog.load(Transmog.java:76)
at com.googlecode.objectify.impl.ConcreteEntityMetadata.load(ConcreteEntityMetadata.java:121)
at com.googlecode.objectify.impl.PolymorphicEntityMetadata.load(PolymorphicEntityMetadata.java:164)
at com.googlecode.objectify.impl.LoadEngine.load(LoadEngine.java:220)
at com.googlecode.objectify.impl.LoadEngine$1.nowUncached(LoadEngine.java:178)
at com.googlecode.objectify.impl.LoadEngine$1.nowUncached(LoadEngine.java:164)
at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30)
at com.googlecode.objectify.impl.Round$1.nowUncached(Round.java:73)
at com.googlecode.objectify.util.ResultCache.now(ResultCache.java:30)
at com.googlecode.objectify.LoadResult.now(LoadResult.java:25)
...
com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:487)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(Unknown Source)
at java.util.AbstractList$Itr.remove(Unknown Source)
at java.util.AbstractList.removeRange(Unknown Source)
at java.util.AbstractList.clear(Unknown Source)
at com.googlecode.objectify.impl.translate.CollectionTranslatorFactory$1.loadListIntoExistingCollection(CollectionTranslatorFactory.java:66)
at com.googlecode.objectify.impl.TranslatableProperty.executeLoad(TranslatableProperty.java:62)
at com.googlecode.objectify.impl.translate.ClassTranslator.loadMap(ClassTranslator.java:115)
at com.googlecode.objectify.impl.translate.MapNodeTranslator.loadAbstract(MapNodeTranslator.java:25)
at com.googlecode.objectify.impl.translate.AbstractTranslator.load(AbstractTranslator.java:25)
at com.googlecode.objectify.impl.Transmog.load(Transmog.java:82)
at com.googlecode.objectify.impl.Transmog.load(Transmog.java:71)
... 68 more
【问题讨论】:
-
值得注意的是,ID 来自一个在同一事务中加载的实体(就在抛出异常的行之前),但带有一个 transactionless() 对象化。
-
请尝试使用 Objectify 4.0.1 的发布版本
-
试过了,4.0.1和4.1都一样
标签: google-app-engine objectify