2014-10-08 48 views
0

尝试从数据存储实体中获取数据时发生异常。 这里是我的代码:GAE ClassCastException Long不能强制转换为

PersistenceManager pmf = PMF.get().getPersistenceManager(); 

try { 
    Query query = pmf.newQuery(DocHeader.class); 
    @SuppressWarnings("unchecked") 
    List<DocHeader> docHeaders = (List<DocHeader>) query.execute(); 

任何人都可以在这个问题上提供帮助。

这里是我的对象

@PersistenceCapable(identityType = IdentityType.APPLICATION) 
public class DocHeader { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.SEQUENCE) 
    private Long docHeaderId; 

    @Persistent 
    private Double previousPayment; 

    @Persistent 
    private Double currentBalance; 

    @Persistent 
    private Double totalAccountBalance; 

    @Persistent 
    private String accountRepresentative; 

    @Persistent 
    private Double minPayment; 

} 
+0

“DocHeader”是你自己的类吗? – icza 2014-10-08 12:54:06

+0

是的,这是我自己的class.and我存储数据使用这个class.when提取数据显示错误 – 2014-10-08 12:55:06

+0

你可以发布这个类的来源(编辑问题)? – icza 2014-10-08 12:59:19

回答

0

例外

ClassCastException异常长不能转换翻一番

意味着你至少有一个DocHeader实体保存在数据存储在您保存它的一个财产是Long号码,但在你的Java实体中你指定它为Double并且当您想要查询它并将其转换回Java类时,尝试转换LongDouble将引发异常。

你可能做使用低级别的数据存储区API是只读的所有DocHeader entitites,并更改Long属性Double这应该是摆在首位Double,然后重新保存这些实体。或者,如果当前实体不重要(例如测试数据),只需删除它们。

文档:Java low-level Datastore API

相关问题