实体只包含一个项目ID,也就是primaryKey,我在数据库中存储例如3个项目,当列表更新时,我需要用新的3个项目替换现有列表新的一个。但在我的情况下,它增加了新的,但我需要完全取代现有的
@Dao
public interface UserIdDao {
@Query("SELECT * FROM userIds")
Flowable<List<UserId>> allUserIds();
@Insert(onConflict = OnConflictStrategy.REPLACE)
List<Long> update(List<UserId> ids);
}
@Entity
public class UserId{
@PrimaryKey
private Long id;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserId userId = (UserFavoriteStore) o;
return (!id.equals(userId.id));
}
@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + (id.hashCode());
return result;
}}
答案 0 :(得分:3)
我需要用新的列表替换现有列表。但在我的情况下,它增加了新的,但我需要完全取代现有的
您编写了代码来检索ID和插入ID。您没有删除ID的代码。
因此,在DAO中添加def month=(m)
if !m.numeric?
m = Date::ABBR_MONTHNAMES.index(m.capitalize[0,3])
end
@month = m.to_s.rjust(2, '0')
end
方法可删除不再需要的ID。然后,当您想要替换ID时,请使用library(ggmap)
geocode("Eiffel Tower")
# lon lat
# 1 2.294481 48.85837
方法删除不再需要的ID,并删除您想要的@Delete
。
@Delete
说&#34;如果您尝试通过主键插入与现有行匹配的行,请不要崩溃,而是替换现有行中的其他列在插入新行之前删除有问题的行&#34; (见the SQLite docs)。在你的情况下: