gpt4 book ai didi

Android Room 无法从模式中识别列名(使用列名的别名)

转载 作者:行者123 更新时间:2023-12-04 15:52:42 29 4
gpt4 key购买 nike

我对 Android 开发和使用其 Room 持久性库还比较陌生。我目前面临的问题是以下错误:

错误:查询有问题:[SQLITE_ERROR] SQL 错误或缺少数据库(没有这样的列:s_abb)

但是我的表架构(引用此列的)确实包含此名称的此列。这是我在 Android 中定义我的实体的方式

@Entity
public class stops {

@PrimaryKey
@NonNull
@ColumnInfo(name = "s_name")
private String s_name;
@Ignore
@ColumnInfo(name = "s_abb")
private String s_abb;
@Ignore
@ColumnInfo(name = "Comments")
private String Comments;

public String getS_abb() {
return s_abb;
}

public void setS_abb(String s_abb) {
this.s_abb = s_abb;
}

public String getS_name() {
return s_name;
}

public void setS_name(String s_name) {
this.s_name = s_name;
}

public String getComments() {
return Comments;
}

public void setComments(String comments) {
Comments = comments;
}


}

我已经在 SQLite Studio 中测试了查询,它确实返回了预期的数据。这是在 DAO 界面中编写的查询的屏幕截图:Query .我个人认为主要问题是 Room 可能无法识别我在子查询和列名中使用的别名。我这样想对吗?我希望我的屏幕截图有所帮助。我确实确保在 SQL 语句之间添加适当的间距,正如这里的许多解决方案所指出的那样。如果你们中的任何人需要我提供更多信息,我很乐意效劳!谢谢

最佳答案

正如 Vladimir Gladun 所指出的,我正在查询的列 s_abb 设置了一个 @Ignore 注释。正如 Android 关于 @Ignore 注释的文档指出“忽略 Room 处理逻辑中的标记元素”: https://developer.android.com/reference/android/arch/persistence/room/Ignore .

这基本上意味着 Room 完全无视它。

但这不是唯一的问题,我的方法需要 Entity 类型的值而来 self 最外层查询的 SELECT 语句返回的是 String 类型的值。修复这两个错误解决了我的问题。

关于Android Room 无法从模式中识别列名(使用列名的别名),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53218517/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com