我正在为我的新项目使用 android 房间持久性库。我想更新表格的某些字段。我在我的 Dao
中尝试过
// Method 1:
@Dao
public interface TourDao {
@Update
int updateTour(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
}
原文由 Rasel 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
@Query
,就像在方法 2 中所做的那样。然后有更小的实体。或者,不要单独更新字段,而是与数据库进行更粗粒度的交互。
IOW,Room 本身没有任何东西可以满足您的需求。
更新 2020-09-15 :Room 现在有部分实体支持,可以帮助解决这种情况。有关更多信息,请参阅 此答案。