Попробуйте получить среднее значение из библиотеки Android Room Persistence с динамическими условиями - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь получить среднее значение, если два условия с использованием библиотеки Android Room Persistence Library, моя сущность выглядит следующим образом:

public class FinishedTask {
    private static final String TASK_NAME_COLUMN = "taskName";
    private static final String DEPARTMENT_NAME_COLUMN = "departmentName";
    private static final String EMPLOYEE_NAME_COLUMN = "employeeName";
    private static final String TIME_UNTIL_DOME_NAME_COLUMN = "timeUntilDoneName";
    private static final String SAVED_DATE_NAME_COLUMN = "savedDateName";

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    private long id = 0;

    @ColumnInfo(name = "passedMilliseconds")
    private long passedMilliseconds = 0;

    @ColumnInfo(name = TASK_NAME_COLUMN)
    private String  taskName = TASK_NAME_COLUMN;

    @ColumnInfo(name = DEPARTMENT_NAME_COLUMN)
    private String departmentName = DEPARTMENT_NAME_COLUMN;

    @ColumnInfo(name = EMPLOYEE_NAME_COLUMN)
    private String employeeName = EMPLOYEE_NAME_COLUMN;

    @ColumnInfo(name = TIME_UNTIL_DOME_NAME_COLUMN)
    private long timeUntilDone = 0;


    @ColumnInfo(name = SAVED_DATE_NAME_COLUMN)
    private long savedDate = 0;

    public FinishedTask(){}
}

Мой запрос выглядит так:

@Query("SELECT AVG(timeUntilDoneName) FROM finishedTasks WHERE :column1=:value1 AND :column2=:value2")
Single<Long> getAverageTime(String column1, String value1, String column2, String value2);

И я получил ошибку:

Запрос вернул пустой набор результатов: SELECT AVG (timeUntilDoneName) ОТ готовых заданий ГДЕ? =? И? =?

Когда я меняю запрос на:

@Query("SELECT AVG(timeUntilDoneName) FROM finishedTasks WHERE taskName=:value1 AND :departmentName=:value2")
Single<Long> getAverageTime(String value1, String value2);

Все работает нормально и как положено. Что я делаю не так?

1 Ответ

0 голосов
/ 03 мая 2018

Вы можете использовать заполнители только в том случае, если сам SQLite поддерживает заполнители, а SQLite не поддерживает замену имен столбцов заполнителями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...