2017-08-08 1 views
3

Je suis en train de mettre à jour la table en utilisant l'annotation @Query de la bibliothèque de chambre, voici mon code (Dans l'interface Dao):Erreur de pièce: pas d'alternative viable en entrée?

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

chaîne d'erreur complète comme ci-dessous:

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

Voici entité class:

@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; 
    } 
} 

Qu'est-ce qui ne va pas avec mon code?

+0

Pouvez-vous éditer votre question et montrer votre classe Java avec l'annotation '@ Entity' qui définit' table_name'? – CommonsWare

+0

@CommonsWare J'ai édité la question s'il vous plaît jeter un oeil, merci – pcj

+0

Essayez de changer votre déclaration à 'UPDATE nom_table SET col1 =: val1 WHERE col2 =: val2'. Vous n'avez pas besoin du préfixe de la table dans ce cas, et le message d'erreur donne l'impression que Room trébuche sur le préfixe. – CommonsWare

Répondre

4

Essayez de changer votre déclaration:

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

Le message d'erreur fait sentir comme chambre trébuche sur le préfixe.

Ceci est un bug dans la pièce, au moins à travers 1.0.0-alpha8. Suivre this issue pour voir quand il est réparé.

Cette syntaxe SQLite n'est pas valide, as it turns out. Les préfixes de table vont sur les colonnes dans les instructions SELECT, not UPDATE statements.