Android Room 中出现“预期表或子查询,出现”错误

LA_*_*mie 5 database sqlite orm android android-room

我正在编写一个数据库,用于使用 Room 保存有关 Android 应用程序中单词的信息。我已经构建了两个实体:Group 和 VocaNote。在组和 VocaNote 之间,我使用一对多关系将 VocaNote 数组保留在单独的组中。

团体课

@Entity(indices = {
    @Index(value = {"language", "nameGroup"}, unique = true)
}
)
public class Group {

@PrimaryKey(autoGenerate = true)
public long id;

@ColumnInfo(name = "language")
public String language;

@ColumnInfo(name = "name_group")
public String nameGroup;
}
Run Code Online (Sandbox Code Playgroud)

VocaNote 类

    @Entity(foreignKeys = @ForeignKey(entity = Group.class,
    parentColumns = "id",
    childColumns = "group_id",
    onDelete = CASCADE))
  public class VocaNote {

@PrimaryKey(autoGenerate = true)
public long id;

@ColumnInfo(name = "origin_word")
public String originWord;

@ColumnInfo(name = "translation")
public String translation;

@ColumnInfo(name = "studied_word")
public int studied;

@ColumnInfo(name = "group_id")
public int groupId;
Run Code Online (Sandbox Code Playgroud)

}

之后,我为上述实体类添加了单独的 DAO,如下所示

VocaNoteDao

@Dao
public interface VocaNoteDao {

@Query("SELECT * FROM vocanote")
List<VocaNote> getAllVocaNote();

@Query("SELECT * FROM vocanote WHERE id = :id")
VocaNote getByIdVocaNote(long id);

@Insert
void insert(VocaNote vocaNote);

@Update
void update(VocaNote vocaNote);

@Delete
void delete (VocaNote vocaNote);
}
Run Code Online (Sandbox Code Playgroud)

组道

@Dao
public interface GroupDao {
@Insert
void insert(Group group);

@Update
void update(Group group);

@Delete
void delete (Group group);

@Query("SELECT * FROM group")
List<Group> getAllGroup();

@Query("SELECT * FROM group WHERE id = :id")
Group getByIdGroup(long id);
Run Code Online (Sandbox Code Playgroud)

}

我在这里遇到了一个问题。当我尝试从组表进行查询,但收到预期的编译错误表或子查询时,得到了 group。请告诉我,我该如何处理?我有组实体,但我的 IDE 不想看到它/

小智 8

使用方括号转义保留关键字

@Query("SELECT * FROM [group] WHERE id = :id")
Group getByIdGroup(long id);
Run Code Online (Sandbox Code Playgroud)