Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Room-查询中外键的使用_Android_Sql_Database_Android Sqlite_Android Room - Fatal编程技术网

Android Room-查询中外键的使用

Android Room-查询中外键的使用,android,sql,database,android-sqlite,android-room,Android,Sql,Database,Android Sqlite,Android Room,我有一个组件,其中包含一个来自组件\u类别的外键 我的目的是根据所选组件类别筛选组件列表 这两个类别如下: @Query("SELECT * from component_table " + "INNER JOIN component_cat_table " + "WHERE component_table.component_cat_id == :categoryID ORDER BY component_name ASC") LiveData

我有一个
组件
,其中包含一个来自
组件\u类别的外键

我的目的是根据所选组件类别筛选组件列表

这两个类别如下:

 @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);

组成部分
组件类别
查询 我希望我的查询如下所示:

 @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);
@Query(“从组件表中选择*”+
“内部联接组件\u目录”+
“其中组件\u table.component\u cat\u id==:类别id按组件\u名称ASC排序”)
LiveData getFilteredComponents(int categoryID);

但在编译时,它告诉我它无法解析
组件表.component\u cat\u id
。我也无法在我的
组件
类中的外键实体上设置名称。我尝试了一些选项,但我不知道如何在不“访问”外键的情况下修复查询。

我碰巧在一个名为“android持久性”的示例项目中找到了答案

为了使用外键,还必须定义指定外键的列。列与外键数组之间的“链接”将自动建立

   @Entity(foreignKeys = {
        @ForeignKey(entity = Book.class,
                parentColumns = "id",
                childColumns = "book_id"),

        @ForeignKey(entity = User.class,
                parentColumns = "id",
                childColumns = "user_id")})
@TypeConverters(DateConverter.class)
public class Loan {
    @PrimaryKey
    @NonNull
    public String id;

    public Date startTime;

    public Date endTime;

    @ColumnInfo(name="book_id")
    public String bookId;

    @ColumnInfo(name="user_id")
    public String userId;
}
以上示例来自以下链接

   @Entity(foreignKeys = {
        @ForeignKey(entity = Book.class,
                parentColumns = "id",
                childColumns = "book_id"),

        @ForeignKey(entity = User.class,
                parentColumns = "id",
                childColumns = "user_id")})
@TypeConverters(DateConverter.class)
public class Loan {
    @PrimaryKey
    @NonNull
    public String id;

    public Date startTime;

    public Date endTime;

    @ColumnInfo(name="book_id")
    public String bookId;

    @ColumnInfo(name="user_id")
    public String userId;
}