У меня есть Component
, который содержит внешний ключ, полученный из Component_category
Моя цель - отфильтровать список компонентов по выбранной категории компонентов.
Оба классаследующим образом:
Компонент
@Entity(tableName = "component_table", foreignKeys = {
@ForeignKey(
entity = Rack.class,
parentColumns = "rack_id",
childColumns = "component_id",
onDelete = ForeignKey.CASCADE,
onUpdate = ForeignKey.CASCADE
),
@ForeignKey(
entity = ComponentCat.class,
parentColumns = "component_cat_id",
childColumns = "component_id",
onDelete = ForeignKey.CASCADE,
onUpdate = ForeignKey.CASCADE
)
})
public class Component {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "component_id")
public int componentID;
@NonNull
@ColumnInfo(name = "component_name")
private String componentName;
// .. omitted
Категория компонента
@Entity(tableName = "component_cat_table")
public class ComponentCat
{
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "component_cat_id")
public int componentCatID;
@NonNull
@ColumnInfo(name = "component_cat_name")
private String componentCatName;
// .. omitted
Запрос
Я хочу свой запросбыть следующим:
@Query("SELECT * from component_table " +
"INNER JOIN component_cat_table " +
"WHERE component_table.component_cat_id == :categoryID ORDER BY component_name ASC")
LiveData<List<Component>> getFilteredComponents(int categoryID);
Но во время компиляции он говорит мне, что не может решить component_table.component_cat_id
.Я также не могу установить имя для объекта с внешним ключом в моем классе Component
.Я попробовал несколько вариантов, но я не знаю, как исправить запрос без «доступа» к внешнему ключу.