Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行SELECT查询时发生ClassCastException_Java_Google App Engine_Jpa_Jpql - Fatal编程技术网

Java 执行SELECT查询时发生ClassCastException

Java 执行SELECT查询时发生ClassCastException,java,google-app-engine,jpa,jpql,Java,Google App Engine,Jpa,Jpql,目前,我将包含以下列的CSV文件上载到Google App Engine数据存储: id, roleName, eggName, highestAllTimePrice, lowestAllTimePrice, averagePrice 当我转到localhost:8888/_ah/admin/datastore时,该表的结果如下: Key, Write Ops, ID/Name, averagePrice, eggName, eggNumber, highestAllTimePrice, l

目前,我将包含以下列的CSV文件上载到Google App Engine数据存储:

id, roleName, eggName, highestAllTimePrice, lowestAllTimePrice, averagePrice
当我转到localhost:8888/_ah/admin/datastore时,该表的结果如下:

Key, Write Ops, ID/Name, averagePrice, eggName, eggNumber, highestAllTimePrice, lowestAllTimePrice, roleName
public String GetData(final ModelMap model)
{
    EntityManager em = EMF.get().createEntityManager();
    Query q = em.createQuery("SELECT s FROM Egg s");
    List<Egg> eggs = new ArrayList<Egg>(q.getResultList());

    model.addAttribute("eggs", eggs);
    return "index";
}
我从以下表格中获得所有数据:

Key, Write Ops, ID/Name, averagePrice, eggName, eggNumber, highestAllTimePrice, lowestAllTimePrice, roleName
public String GetData(final ModelMap model)
{
    EntityManager em = EMF.get().createEntityManager();
    Query q = em.createQuery("SELECT s FROM Egg s");
    List<Egg> eggs = new ArrayList<Egg>(q.getResultList());

    model.addAttribute("eggs", eggs);
    return "index";
}
但是,当我运行该查询时,会出现以下错误:

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Double
    at com.google.appengine.datanucleus.FetchFieldManager.fetchDoubleField(FetchFieldManager.java:140)
    at org.datanucleus.state.AbstractStateManager.replacingDoubleField(AbstractStateManager.java:2256)
    at Entity.Egg.jdoReplaceField(Egg.java)
    at Entity.Egg.jdoReplaceFields(Egg.java)

问题是我不知道为什么要转换类型?我是否将实体类映射错了?

可能您的双字段(最高价等)被视为数据存储中的字符串,因此无法映射到您的实体。

是的,您是对的,它们存储为字符串,需要弄清楚如何在.yml文件中定义它们的类型。