возврат суммы и среднего использования комнаты - PullRequest
0 голосов
/ 11 июня 2018

Моя таблица имеет следующую структуру:

@Entity(tableName = "userFitnessDailyRecords")

public class UserFitnessDailyRecords {



    @NonNull
    @PrimaryKey
    private Date forDay;
    private int stepCount;
}

Запрос, который я пишу для получения суммы и среднего, выглядит следующим образом:

@Dao
public interface UserFitnessDailyRecordsDao {


    @Query("SELECT SUM(stepCount), AVG(stepCount) FROM userFitnessDailyRecords where forDay BETWEEN :startDay AND :endDay ORDER BY forDay ASC")
    UserFitnessDailyRecords getUserFitnessSumAndAverageForLastThirtyDays(Date startDay, Date endDay);


    @Query("DELETE FROM userFitnessDailyRecords")
    void deleteUserFitnessDailyRecord();

}

При компиляции я получаю сообщение об ошибке:возвращать значения, так как столбцы не содержат суммы и среднего поля.Как можно получить сумму и среднее в этом случае?

1 Ответ

0 голосов
/ 11 июня 2018

Вы возвращаете запись UserFitnessDailyRecords из вашего метода getUserFitnessSumAndAverageForLastThirtyDays ().Но столбцы, выбранные по вашему запросу, не возвращают объект такого рода.

Помните об использовании ключевого слова "AS" в вашем запросе SQL для генерации псевдонимов имен столбцов, которые соответствуют именам ваших переменных POJO.

Вы можете вернуть вместо этого POJO из этого метода, например, какthis:

Способ Kotlin:

data class SumAveragePojo(var total: Float, var average: Float)

Способ Java:

class SumAveragePojo
{ 
    public float total;
    public float average;
}

и измените тип возвращаемого метода следующим образом:

@Query("SELECT SUM(stepCount) as total, AVG(stepCount) as average FROM userFitnessDailyRecords where forDay BETWEEN :startDay AND :endDay ORDER BY forDay ASC")
SumAveragePojo getUserFitnessSumAndAverageForLastThirtyDays(Date startDay, Date endDay);
...