这个问题似乎是由于 Room 的缓存机制导致的。要解决这个问题,可以使用以下步骤:
示例:
原始查询代码:
@Query("SELECT * FROM user JOIN address ON user.addressId = address.id WHERE user.id = :id")
LiveData
修改后的查询代码:
@Query("SELECT user.*, address.street AS addressStreet, address.city AS addressCity FROM user JOIN address ON user.addressId = address.id WHERE user.id = :id")
LiveData
示例: 错误的更新代码: @Update void updateUserWithAddress(UserWithAddress user);
正确的更新代码: @Transaction @Update void updateUserWithAddress(UserWithAddress user);
通过以上两步处理,该问题应该得到了解决。