提问者:小点点

更新android Room中某个实体的特定字段


我正在为我的新项目使用android room持久性库。我想更新表的某些字段。我在我的DAO中尝试过-

// Method 1:

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

但是,当我尝试使用此方法进行更新时,它会更新实体的每个字段,在这些字段中,它与tour对象的主键值相匹配。我已使用@query

// Method 2:

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

它正在工作,但在我的情况下会有很多查询,因为我的实体中有很多字段。我想知道如何更新某些字段(不是全部),如method 1,id=1;(id是自动生成主键)。

// Entity:

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

共1个答案

匿名用户

我想知道如何像方法1那样更新某些字段(不是全部),其中id=1

使用@query,就像在方法2中所做的那样。

在我的例子中,查询太长,因为我的实体中有许多字段

然后有更小的实体。或者,不单独更新字段,而是与数据库进行更粗粒度的交互。

<罢工> 房间里没有什么东西能满足你的要求。

更新2020-09-15:Room现在有部分实体支持,可以帮助解决这个场景。请参阅此答案了解更多信息。