GAE ClassCastException Long无法强制转换为double

时间:2014-10-08 12:50:30

标签: java

尝试从数据存储区实体获取数据时获取异常。 这是我的代码:

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;

}

1 个答案:

答案 0 :(得分:0)

例外

  

ClassCastException Long无法强制转换为double

表示您在数据存储区中至少保存了一个DocHeader实体,其中您保存了一个实体,其中一个属性为Long,但在您的Java实体中,您将其指定为Double当您想查询它并将其转换回Java类时,尝试转换Long - &gt; Double抛出异常。

您可以执行的操作是使用低级数据存储api读取所有DocHeader个权限,并将Long属性更改为Double,这些属性应为Double in {首先,然后重新保存这些实体。或者,如果当前实体不重要(例如测试数据),只需删除它们即可。

文档:Java low-level Datastore API