Java 执行SELECT查询时发生ClassCastException
目前,我将包含以下列的CSV文件上载到Google App Engine数据存储: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
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文件中定义它们的类型。