2017-08-21 61 views
12

Używam androidowej biblioteki trwałości pomieszczenia dla mojego nowego projektu. Chcę zaktualizować niektóre pola tabeli. Próbowałem jak w moim Dao -Zaktualizuj pewne określone pole podmiotu w Androidzie Room

Metoda 1:

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

Ale kiedy próbuję aktualizować za pomocą tej metody, a następnie aktualizuje wszystkie pola podmiotu gdzie odpowiada wartości klucza podstawowego obiektu turystycznego. Użyłem @Query

Metoda 2:

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

To działa, ale jest zbyt długi kwerendy w moim przypadku, bo mam wiele pola w mojej jednostce. Chcę wiedzieć, jak mogę zaktualizować niektóre pola (nie wszystkie) takie jak method 1 gdzie id = 1; (id to automatyczny klucz podstawowy).

Entity: 

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

Jak zaktualizować listę w tabeli. Właściwie wstawiłem listę w tabeli według TypeConverter. Ale podczas aktualizacji nie działa. Proszę zasugerować, jeśli spotkałeś się z takim problemem. –

Odpowiedz

9

Chcę wiedzieć, w jaki sposób mogę zaktualizować pewne pole (nie wszystkie) jak metoda 1, gdzie id = 1

Zastosowanie @Query, jak to było w metodzie 2.

to zbyt długie zapytanie w moim przypadku, ponieważ mam wiele pól w mojej jednostce

Następnie mają mniejsze jednostki. Lub nie aktualizuj pól pojedynczo, ale zamiast tego mają bardziej gruboziarniste interakcje z bazą danych.

IOW, w pokoju nie ma nic, co mogłoby zrobić to, czego szukasz.