Проблема в том, что это возвращает только длинное значение, поэтому десятичные точки теряются. Как я могу получить РЕАЛЬНУЮ сумму этих значений?
Если вы посмотрите на ORMLite docs on raw queries, вы увидите, что существует несколько способов использования необработанных запросов с разными типами полей. Цитирование:
Вы также можете отобразить результаты в свой собственный объект, пройдя объект RawRowMapper. Это вызовет объект сопоставления с массивом строк и позволит ему преобразовать строки в объект ...
Вы также можете определить свой собственный настраиваемый картограф, если результаты более сложны.
Это будет выглядеть примерно так:
GenericRawResults<Double> rawResults =
orderDao.queryRaw(
"SELECT SUM(productPrice * productQuantity) FROM cart",
new RawRowMapper<Double>() {
public Double mapRow(String[] columnNames, String[] resultColumns){
return Double.parseDouble(resultColumns[0]);
}
});
Есть и другие примеры в ORMLite документации. Например, вы можете указать аргумент DataType[]
и ORMLite сделать извлечение из базы данных изначально на Double
.