Как я могу запросить запись полей детали с помощью Room in Android Studio с Kotlin? - PullRequest
0 голосов
/ 05 августа 2020

Это хорошо работает для запроса записи MVoice с использованием fun listVoice():LiveData<List<MVoice>> с платформой Room в Android Studio с Kotlin.

Теперь я надеюсь запросить запись полей частей (например, ID и name) MVoice, как это сделать?

interface DBVoiceDao{
   @Query("SELECT * FROM voice_table ORDER BY createdDate desc")
   fun listVoice():LiveData<List<MVoice>>

   /*  How can I do this?
   @Query("SELECT id, name FROM voice_table ORDER BY createdDate desc")
   fun listVoiceOfPartField():LiveData< ??? >
   */
}



@Entity(tableName = "voice_table", indices = [Index("createdDate")])
data class MVoice(
    @PrimaryKey (autoGenerate = true) @ColumnInfo(name = "id") var id: Int = 0,
    var name:          String = "Untitled",
    var path:          String = "My path",
    var createdDate:   Calendar = Calendar.getInstance(),
    var isStar:        Boolean = false,
    var description:   String="My description"
)

1 Ответ

1 голос
/ 05 августа 2020

Как " Флорина Мунтенеску " предложила: Читайте только то, что вам нужно в этой статье 7 советов для профессионалов

Вы можете добиться этого, создав новый класс модели:

data class VoiceMinimal(@ColumnInfo(name = "id") val id: Int,
                        @ColumnInfo(name = "name") val name: String)

В классе DAO мы определяем запрос и выбираем правильные столбцы из голосовой таблицы.

@Dao
interface DBVoiceDao {
    @Query(“SELECT id, name FROM voice_table ORDER BY createdDate dESC)
    fun getVoiceMinimal(): List<VoiceMinimal>
}
...