android - 房间错误 : no viable alternative at input?

标签 android android-room

我正在尝试使用房间库的@Query 注释更新表,下面是我的代码(在 Dao 接口(interface)中):

@Query("UPDATE table_name SET table_name.col1 = :val1 WHERE table_name.col2 = :val2")
void updateValue(long val1, long val2);

完整的错误字符串如下:

Error:(11, 10) error: no viable alternative at input 'UPDATE table_name SET table_name.'

这是实体类:

@Entity(tableName = "table_name")
public class SampleTable {

    @PrimaryKey
    @ColumnInfo(name = "_id")
    private Long Id;

    @ColumnInfo(name = "col1")
    private Long column1;

    @ColumnInfo(name = "col2")
    private Long column2;

    public Long getId() {
        return Id;
    }

    public void setId(Long id) {
        Id = id;
    }

    public Long getColumn1() {
        return column1;
    }

    public void setColumn1(Long column1) {
        this.column1 = column1;
    }

    public Long getColumn2() {
        return column2;
    }

    public void setColumn2(Long column2) {
        this.column2 = column2;
    }
}

我的代码有什么问题?

最佳答案

在这种情况下也可能发生此错误:

如果你传递的是一个列表,不要忘记添加括号将你的列表变量括起来,否则你会得到同样的错误:

@Query("select name from mytable where name in (:myList)")
LiveData<List<String>> findNames(List<String> myList);

关于android - 房间错误 : no viable alternative at input?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45575898/

相关文章:

android - 将值设置为 Realm 对象

安卓分页 3 : How to change parameters of RemoteMediator

android - 改造房间模型映射

android - 如何在 session 室中使用自动递增字段创建新的实体对象?

java - 如何使用 AlarmManager 在 AsyncTask 中下载失败时重试

android - 使用 DialogFragment 和导航库时将对话框显示为全屏或对话框

php - 如何将有值(value)的 TextView 中的值插入到mysql

android - 第一次调用 getDecorView 会锁定 View 。如何知道 View 是否被锁定?

android - 将第二个 Room 数据库添加到我的应用程序会导致异常 : "Caused by: java.lang.IllegalStateException: Room cannot verify the data integrity"

android - 如何通过单击按钮删除房间的 SQlite 行