I have a Component
which contains a foreign key coming from Component_category
My purpose is that a component list will be filtered by the selected component category.
Both classes are as followed:
Component
@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
Component Category
@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
I want my query to be as followed:
@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);
But at compile time it tells me it can not resolve component_table.component_cat_id
. I am also unable to set a name at the foreign key entity in my Component
class. I tried a few options but I don't know how to fix the query without 'access' to the foreign key.