【发布时间】:2017-08-08 18:47:54
【问题描述】:
我正在尝试使用房间库的@Query 注释更新表格,下面是我的代码(在 Dao 界面中):
@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;
}
}
我的代码有什么问题?
【问题讨论】:
-
您可以编辑您的问题并使用定义
table_name的@Entity注释显示您的Java 类吗? -
@CommonsWare 我已经编辑了问题,请看一下,谢谢
-
尝试将您的声明更改为
UPDATE table_name SET col1 = :val1 WHERE col2 = :val2。在这种情况下,您不需要表前缀,并且错误消息让人感觉 Room 被前缀绊倒了。 -
@CommonsWare 你是绝对正确的我删除了 table_name 并且错误消失了,谢谢。我没想到会有这样的行为。谢谢。
-
老实说,这感觉就像是房间虫子。如果您可以创建一个用作可重现测试用例的项目,请file an issue 并在那里上传示例项目。如果您认为自己没有时间这样做,请告诉我,我会看看能不能一起扔东西。
标签: android android-room