在 Android Room:SQL 中使用 sql 语句时出错或缺少数据库(没有这样的列:xx)



我在 mysql 中使用以下语句成功查询数据: "SELECT * FROM (SELECT * FROM `im_msg_hist` ORDER BY dTime DESC) AS T where toId='xxxx' or frmId='xxxx' GROUP BY toId"。

但是当我在Android Room中使用这样的语句时会给出一个错误:"There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (no such column: tb_msg.id)" 这是实体:

@Entity(tableName = "tb_msg")
public class Message {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "id")
private long id;
@ColumnInfo(name = "send_id")
private String sendId;
@ColumnInfo(name = "receive_id")
private String receiveId;
...
}

这是道:

@Dao
public interface MessageDao {
@Query("SELECT * FROM (SELECT * FROM tb_msg ORDER BY time DESC) AS T WHERE send_id=:userId or receive_id=:userId GROUP BY send_id")
LiveData<List<PersonalMsg>> getGroupByReceiveId(String userId);
}

您应该澄清房间的表名列名称。我建议你参考这个文档

Entity(tableName = "tb_msg")
public class Message {
@PrimaryKey
@ColumnInfo(name = "id")
private long id;
@ColumnInfo(name = "send_id")
private String sendId;
@ColumnInfo(name = "receive_id")
private String receiveId;
...
}

相关内容

最新更新