2015-01-26 1 views
1

У меня есть различные значения double в моей базе данных. Для того, чтобы получить сумму всех них я используюЧто такое метод получения REAL из СУММ с использованием ORMLite

relvantDao.queryRawValue("SELECT SUM(productPrice * productQuantity) FROM cart");

Проблема в том, что это только возвращает значение long, следовательно, десятичные точки теряются. Как я могу получить сумму этих значений? REAL?

ответ

2

Проблема в том, что это возвращает только длинное значение, поэтому десятичные точки теряются. Как я могу получить РЕАЛЬНУЮ сумму этих значений?

Если вы посмотрите на 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.