Не могу определить тип возвращаемой базы данных номеров

#android #android-room

Вопрос:

Моя Сущность

 @Entity(tableName = "my_entity_table")
internal data class MYEntity(
    @PrimaryKey(autoGenerate = true)
    val pcID: Int,
    val server_id: String,
    val name: String,
    val detail: String,
    val duration: Int,
    val start_date : Long,
    val end_date: Long,
    val created_by_user_id: String,
    val db_create_dttm: Long,
    val db_update_dttm: Long,
    val db_create_src: Long,
    val db_update_src: Long
)
 

Мой запрос dao,в котором я должен выбрать продолжительность, дату начала и дату окончания

 @Query("select duration,start_date,end_date from my_entity_table where id =:pcID")
    suspend fun getDurationDetails(pcID:Int) : What should be the return type?
 

Каким должен быть тип возвращаемого запроса ??

Комментарии:

1. почему бы просто не выбрать соответствующие объекты, а затем использовать их свойства ?

2. вы можете использовать один и тот же класс модели сущностей .

3. @androidLearner проект не создается, если я это сделаю, появится ошибка, в которой говорится, что остальные поля не возвращаются в запросе, хотя они не являются нулевыми

4. Я не понял @a_local_nobody

5. Как сказал @Bogdan Android, создайте новый класс модели с полями ,которые вы хотите, используйте этот класс в качестве возвращаемого типа.

Ответ №1:

Вы можете создать определенный класс данных в качестве модели для своего запроса с определенными полями:

 data class ExampleModel(
        @ColumnInfo(name = "duration") val duration: Int?,
        @ColumnInfo(name = "start_date") val start_date: Long?
        @ColumnInfo(name = "end_date") val end_date: Long?
    )
 

А затем используйте его в качестве возврата:

 @Query("select duration,start_date,end_date from my_entity_table where id =:pcID")
    suspend fun getDurationDetails(pcID:Int) : ExampleModel
 

Я не думаю, что использование модели сущностей возможно, потому что ваши параметры сущностей не могут быть обнулены, и вы запрашиваете только некоторые из этих параметров.