Я пытаюсь получить категорию компонентов с определенным количеством компонентов в стойке.
Запрос
@Query("SELECT id, name, component_amount = " +
" (SELECT COUNT(component.id) as amount " +
" FROM component " +
" WHERE component.rack_id = :rackID AND component_cat.id = component_cat_id ) " +
"FROM component_cat")
LiveData<List<ComponentCat>> getRackComponentCategories(long rackID);
ComponentCat
public class ComponentCat
{
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
public long componentCatID;
@ColumnInfo(name = "name")
private String componentCatName;
@ColumnInfo(name = "component_amount")
private int amountOfComponents;
public ComponentCat(String componentCatName, int amountOfComponents) {
this.componentCatName = componentCatName;
this.amountOfComponents = amountOfComponents;
}
Тестируя это в PHPMyAdmin, он работает, но, помещая этот SQL в приложение Room, я получаюследующая ошибка:
error: The columns returned by the query does not have the fields [amountOfComponents] in com.mwb.digitalstorage.model.ComponentCat even though they are annotated as non-null or primitive. Columns returned by the query: [id,name,component_amount = (SELECT COUNT(component.id) as amount FROM component WHERE component.rack_id = :rackID AND component_cat.id = component_cat_id )]
В комнате, как мне установить переменную amountOfComponents
для результата COUNT()
?
Я пытался:
- Наличие COUNT (component.id) в качестве component_amount, но такое не дает правильного результата
- Повторное создание таблицы вMySQL и выполнить тот же запрос, который дал правильный результат
- Удаление @NonNull в полях, без разницы
назначение component_amount.amount
@ Query("SELECT id, name, component_amount.amount =" + "(SELECT COUNT (component.id) как сумма" ...
это не строит