Android 如果查询没有结果,房间会返回什么

Android 如果查询没有结果,房间会返回什么,android,sqlite,android-room,Android,Sqlite,Android Room,很难找到这个答案,而文档似乎无法回答这个问题。 如果我有一个基本的房间查询 @Query("SELECT * FROM geotable WHERE geohash = :geohash") abstract suspend fun getGeoTable(geohash: String) : GeoTable 没有这样的项使用这个主键,会发生什么?AndroidStudio说DAO对象永远不会返回空值。似乎EmptyResultSetException只有在使用我没有使

很难找到这个答案,而文档似乎无法回答这个问题。 如果我有一个基本的房间查询

@Query("SELECT * FROM geotable WHERE geohash = :geohash")
abstract suspend fun getGeoTable(geohash: String) : GeoTable


没有这样的项使用这个主键,会发生什么?AndroidStudio说DAO对象永远不会返回空值。似乎EmptyResultSetException只有在使用我没有使用的RxJava时才会抛出。那么,当plain old ROOM什么也找不到时,它会抛出什么呢?

如果根据您的条件什么也找不到,它将返回null。

如果没有结果 它不会简单地返回任何东西
什么也没发生,但为什么你不能运行这个程序并找出答案呢?@a_local_nobody好吧,我需要几个小时才能让代码重新编译,因为它处于“正在工作”状态。因此,如果有人能给出简单的答案,我很高兴知道我现在正在编写代码。很公平,我只是在问,我认为运行它或为此做一个快速示例应用程序/单元测试会快得多,而不必在这里等待回答。我的理解是,如果没有结果,数据库将抛出
EmptyResultSetException
。但是如果有多个结果呢?您将只获得一个具有此返回类型的。最好使用一个列表来优雅地处理所有情况,特别是因为您正在执行
SELECT*
@Nicolas,据我所知,如果查询的返回类型类似于RxJava库中的Single,则只会抛出EmptyResultSetException,而查询需要返回结果。但我没有在普通房间看到它。我可以把结果变成一个列表,geohash是主键。即使它只应该是一个项目,但基于查询,列表将更有意义。所以我假设如果它是一个列表,它将返回一个空列表。我可以这样做。这个答案与已经发布的答案有何不同?