我有一个显示小行星列表的主要片段。
以下是我想要实现的流程。
override suspend fun getAsteroid(): List<Asteroid> {
var result : List<Asteroid>
try {
var isDataAvailable = getAnyAsteroidFromDb()
if (isDataAvailable == null) {
result = getAsteroidApi().asDomainModel()
} else {
result = getAsteroidFromDb()
}
} catch (e : Exception) {
}
return result
}
getaSteroidFromdb
从room获取数据
问题是getaSteroidFromdb
从Dao返回Livedata
@Query("SELECT * FROM asteroid_tbl")
fun getAsteroidsFromDb () : LiveData<List<AsteroidEntity>>
函数本身getAsteroid
返回小行星列表。
对此有不止一种解决方案,但由于您使用的是MVVM模式。因此,我想建议你一个模式,为这种情况。
每当有一种情况下,必须检查我们的本地数据库或调用我们的后端API。通常的调用结构是只有一点数据源,以避免歧义和此类问题。
因此,虽然您可以轻松地从LiveData获得值
或将API响应转换为LiveData
。我建议你们的结构如下。
在viewmodel类中获取数据方法
我有这样的查询,我想从中提取电影标题及其评级 但此列表显然不能存储具有2个值的结果集 在了解它之后,我发现例如这个链接Spring Data: JPA repository findAll()返回*Map而不是List?但我似乎不清楚它们的实现。 我不明白他们从哪里得到第一个链接中的长值 我如何创建我的地图? 电影类: 评级等级:
我转换java代码到kotlin代码,我得到类型未解决的java类错误。 我的Java类是 已转换的Kotlin类 非常感谢。
Room存储数据库的位置以及如何强制重新生成数据库?我尝试在以下位置查找DB: 我想使用SQLLite看看数据库中到底有什么数据,所以我按照“Access database in Android Studio”的方向操作,但我只看到一个缓存和codecache目录存储在那里。没有数据库目录。 想要查看DB的原因是我更改了模型以添加几个字段,但我想不出如何强制使用Room来重新创建并用数据重新填充D
我在资产文件夹中有一个。db文件。我的RoomDatabase类如下所示。我把应用程序安装到我的设备上。然后,我在下面的类中更改了version=2,并使我的预填充数据库版本为2。然后,我重命名了表中的一列,以便更改模式。然后我又安装了应用程序。然后嘣!Room给了我以下错误:Room无法验证数据完整性。看起来您已经更改了架构,但忘记更新版本号。您可以通过增加版本号来解决这个问题。 在这一点之后,
我需要帮助设置一个应用程序,该应用程序将内部(主)MS SQL数据库DB1中的数据子集复制到另一个MySQL数据库DB2中,该数据库在Web服务器上运行,供Web应用程序使用(即,我想同步这两个数据库)。这两个数据库上的表具有相同的名称,尽管DB2上只定义了属性/列的子集。我想使用(xml配置的)spring、spring data jpa(即JpaRepository接口)和hibernate作