2017-08-08 34 views
3

我想更新使用室內庫@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; 
    } 
} 

我的代碼有什麼問題?

+0

你能編輯你的問題,並用定義'table_name'的'@ Entity'註解來顯示你的Java類嗎? – CommonsWare

+0

@CommonsWare我編輯了這個問題,請看看,謝謝 – pcj

+0

嘗試改變你的語句到'UPDATE table_name SET col1 =:val1 WHERE col2 =:val2'。在這種情況下,您不需要表前綴,並且錯誤消息會讓Room Room跳過前綴。 – CommonsWare

回答

4

試着改變你的語句:

UPDATE table_name SET col1 = :val1 WHERE col2 = :val2. 

錯誤消息使得它感覺像客房絆倒的前綴。

這是房間中的一個錯誤,至少通過 1.0.0-alpha8。跟蹤 this issue以查看它何時得到修復。

這實際上是無效的SQLite語法,as it turns out。表格前綴位於SELECT報表中,not UPDATE statements

相關問題