Запрос комнаты с псевдонимом столбца, возвращающим нуль

Я боролся с этим и не нашел решения.

Скажем, у меня есть этот образец объекта:

@Entity (tableName = "test")
public class Test{

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

    @ColumnInfo(name = "field1")
    @NonNull
    private double field1;

    @Ignore
    @ColumnInfo(name = "queryField")
    private transient String queryField;

}

Итак, в основном моя таблица содержит id и field1, в то время как queryField не является таблицей столбцов, но используется, например, на экранах для отображения дополнительных сведений из другой таблицы.

Тогда в моем DAO

...
    @Query("Select a.id, a.field1, b.column as queryField
            "from test a inner join some_table on..." +
            "where a.id=:someId" +
            "order by i.name ASC")
    LiveData<List<Test>> get(long someId);
....

Таким образом, выполняя что-то подобное, и результат запроса, содержащий информацию test.id и test.field1, не заполняет свойство queryField, которое остается нулевым.

@Entity не допускает такого рода запросы? Мне нужно создать еще один класс, чтобы добавить новый столбец? Я бы хотел смешать в проекте Entities и Pojos, чтобы упростить задачу.

пробовали отлаживать сгенерированный код?

pskink 20.06.2018 16:24

@pskink интересно, глядя на сгенерированный * DAO_impl.java, я вижу сгенерированный код для моего запроса, но цикл курсора использует только столбцы без Ignore, поэтому as queryField фактически не обрабатывается. Может быть, @Ignore не подходящая аннотация для этого?

Alin 20.06.2018 20:17

Я не знаю, а что, если вы удалите эту аннотацию?

pskink 20.06.2018 20:28

Без Ignore приложение вылетает, так как думает, что новый queryField должен существовать в базе данных ...

Alin 20.06.2018 20:34

это может быть полезно stackoverflow.com/questions/47282111/…

Pardeep Kumar 22.01.2019 09:56
1
5
363
0

Другие вопросы по теме