Обновить часть сущности с помощью необработанного запроса - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь обновить только часть объекта, используя комнату.

Стандартные методы вставки и обновления в StudentDao работают нормально, но как только я пытаюсь использовать необработанный запрос для обновления только поля субъектов, у меня возникают проблемы

Сгенерированная Java-реализация StudentsDao не использует преобразователь типов в методе необработанных запросов, как это происходит со стандартными методами вставки (student: Student) и update (student: Student). Похоже, это проблема, возможно ли использовать пространство для конвертера типов с необработанным запросом?

Нужно ли мне вместо этого получить ученика, обновить поле предметов и использовать метод обновления? Я бы предпочел избегать этого метода, так как это будет два вызова базы данных, а не один.

Студенческая организация:

@Entity(tableName = "students")
class Student {

    @PrimaryKey
    var id: String = ""

    @ColumnInfo(name = "subjects")
    var subjects: List<String>? = null

    @ColumnInfo(name = "name")
    var name: String? = null
}

StudentDao:

@Dao
interface StudentDao {

    @Delete
    fun delete(student: Student)

    @Query("SELECT * FROM students WHERE id = :id")
    fun findById(id: String): User

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insert(student: Student): Int

    @Update
    fun update(student: Student): Int

    @Query("UPDATE students set subjects = :subjects WHERE id = :id")
    fun updateStudent(
        id: String?,
        subjects: List<String>?
    ): Int
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...