Я пытаюсь обновить только часть объекта, используя комнату.
Стандартные методы вставки и обновления в 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
}