&引用;应为表或子查询,得到;Android房间中的错误

&引用;应为表或子查询,得到;Android房间中的错误,android,database,sqlite,orm,android-room,Android,Database,Sqlite,Orm,Android Room,我正在写一个数据库,用来保存Android应用程序中单词的信息。我构建了两个实体:Group和VocaNote。在Group和VocaNote之间,我使用一对多关系将VocaNote数组保持在单独的组中 集体课 @Entity(indices = { @Index(value = {"language", "nameGroup"}, unique = true) } ) public class Group { @PrimaryKey(autoGenerate = true) publ

我正在写一个数据库,用来保存Android应用程序中单词的信息。我构建了两个实体:Group和VocaNote。在Group和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;
}
    @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;
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;
}
    @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;
}

之后,我为上述实体类添加了单独的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);
}
@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);
@Dao
公共接口{
@查询(“从注释中选择*)
列出getAllVocaNote();
@查询(“从vocanote中选择*,其中id=:id”)
VocaNote getByIdVocaNote(长id);
@插入
空白插入(注释);
@更新
无效更新(VocaNote VocaNote);
@删除
作废删除(VocaNote VocaNote);
}
GroupDao

@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);
}
@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);
@Dao
公共接口GroupDao{
@插入
空白插入(组);
@更新
无效更新(组);
@删除
作废删除(集团);
@查询(“从组中选择*)
列出getAllGroup();
@查询(“从id=:id的组中选择*)
组getById组(长id);
}

我有个问题。当我试图从组表中进行查询,但收到编译错误表或子查询时,得到了组
请告诉我,我该怎么处理?我有组实体,但我的IDE不想看到它/

使用括号转义保留关键字

@Query("SELECT * FROM [group] WHERE id = :id")
Group getByIdGroup(long id);

您必须检查表名。必须写入表名。甚至不能为空字符串。

您可能需要为
提供单独的
表名
,因为
是SQL保留关键字。感谢您的快速回复。你的评论帮助解决了我的问题。非常感谢你!虽然这会起作用,但单引号可能更适合查看详细信息。