2013-04-07 2 views
0

В настоящее время я загрузить CSV-файл, который содержит следующие столбцы к Google App Engine хранилище данных:ClassCastException при выполнении запроса на выборку

id, roleName, eggName, highestAllTimePrice, lowestAllTimePrice, averagePrice 

и результат таблицы, когда я иду на локальном хосте: 8888/_ah/админ/хранилищу является следующим:

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"; 
} 

Entity

@Entity 
public class Egg { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Key key; 

    private int eggNumber; 
    private String roleName; 
    private String eggName; 
    private double highestPrice; 
    private double lowestPrice; 
    private double averagePrice; 

    // getters setters 
} 

Но когда я запускаю этот запрос, я получаю эту ошибку:

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) 

Проблема, я не знаю, почему это преобразование типов? Я неправильно определил класс сущности?

ответ

1

Возможно, ваши двойные поля (highPrice и т. Д.) Считаются строками в хранилище данных и поэтому не могут быть сопоставлены с вашим объектом.

+0

Да, вы правы, они были сохранены как строки, необходимо выяснить, как определить их типы в файле .yml. – Michael

Смежные вопросы