【发布时间】:2014-12-01 02:30:48
【问题描述】:
我一直在使用 appengine 实现应用程序,并且也在使用 JDO。
在我的一个实体类中,我有一个 int 属性:
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true")
@Persistent
int numberToStore;
我能够毫无问题地存储实体并访问此属性。
但是,我决定使用数据存储查询控制台并将 numberToStore 属性的值从 4 更新为 5。控制台“编辑实体”屏幕中的类型一直是“A 数字”。 现在,每当我尝试从数据存储区访问实体时,我的日志中都会出现以下异常:
com.google.api.server.spi.SystemService invokeServiceMethod: cause={0} java.lang.ClassCastException: java.lang.Long 无法转换为 java.lang.Double 在 com.google.appengine.datanucleus.TypeConversionUtils$5.apply(TypeConversionUtils.java:121) 在 com.google.appengine.datanucleus.TypeConversionUtils$5.apply(TypeConversionUtils.java:119)
为什么会出现这个问题?从管理控制台更新实体属性值是否会导致属性的基础类型发生更改。 另外,我现在如何撤消对实体中此特定属性的这种类型更改。
【问题讨论】:
-
这看起来可能是新数据存储查看器的问题。您能否确认您从console.developers.google.com 下的页面编辑了实体?
-
是的,我从 console.developers.google.com 下的页面编辑了实体
标签: google-app-engine google-cloud-endpoints google-cloud-datastore datanucleus