2017-08-21 2 views
12

J'utilise la bibliothèque de persistance de pièce android pour mon nouveau projet. Je veux mettre à jour un champ de table. J'ai essayé comme dans mon Dao -Mettre à jour un champ spécifique d'une entité dans android Salle

Méthode 1:

@Dao 
public interface TourDao { 
    @Update 
    int updateTour(Tour tour); 
} 

Mais lorsque je tente de mettre à jour en utilisant cette méthode il met à jour tous les domaines de l'entité où elle correspond à la valeur de clé primaire de l'objet tour. Je l'ai utilisé @Query

Méthode 2:

@Query("UPDATE Tour SET endAddress = :end_address WHERE id = :tid) 
    int updateTour(long tid, String end_address); 

Il fonctionne, mais est trop longue requête dans mon cas parce que j'ai beaucoup dans mon champ entité. Je veux savoir comment puis-je mettre à jour certains champs (pas tous) comme method 1 où id = 1; (id est la clé primaire de génération automatique).

Entity: 

@Entity 
public class Tour { 
    @PrimaryKey(autoGenerate = true) 
    public long id; 
    private String startAddress; 
    private String endAddress; 
    //constructor, getter and setter 
} 
+0

Comment mettre à jour une liste dans le tableau. En fait, j'ai inséré la liste dans Table par TypeConverter. Mais en venant avec la mise à jour ça ne marche pas. S'il vous plaît suggérer, si vous avez fait face à n'importe quel problème comme celui-ci. –

Répondre

9

Je veux savoir comment puis-je mettre à jour un champ (pas tous) comme méthode 1 où id = 1

Utilisez @Query, comme vous l'avez fait dans la méthode 2.

est trop longue requête dans mon cas parce que j'ai beaucoup dans mon champ entité

Puis avoir des entités plus petites. Ou, ne pas mettre à jour les champs individuellement, mais plutôt avoir des interactions plus grossières avec la base de données. IOW, il n'y a rien dans la chambre elle-même qui fera ce que vous cherchez.