我正在为新项目使用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
}
如何更新表中的列表。 实际上,我已经通过TypeConverter在Table中插入了列表。 但是在进行更新时无法正常工作。 如果遇到任何此类问题,请提出建议。
@ AmanGupta-ShOoTeR对于上述评论,您有任何解决方案吗?
我的图书馆Kripton Persistence Library的工作原理与该Room库非常相似。 如果您想了解我如何使用Kripton解决此问题,请访问abubusoft.com/wp/2019/10/02/
@ AmanGupta-ShOoTeR我在使用@Query更新时遇到了此类问题。 然后我使用@Insert(onConflict = OnConflictStrategy.REPLACE)通过创建具有相同主键值而不是update的对象来工作
根据SQLite更新文档:
@Query("UPDATE tableName SET
field1 = :value1,
field2 = :value2,
...
//some more fields to update
...
field_N= :value_N
WHERE id = :id)
int updateTour(long id,
Ty