Java.lang.IllegalStateException: закрывается, когда файл сохраняется в базе данных комнаты.Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Java.lang.IllegalStateException: закрывается, когда файл сохраняется в базе данных комнаты.

Сообщение Anonymous »

Я загружаю несколько файлов по URL из сети с помощью библиотеки okHttp3 и в теле ответа, получая ByteArray (например, response.body?.bytes()< /код>). Далее мне нужно сохранить эти файлы как ByteArray в библиотеке комнаты.

Код: Выделить всё

            try {
val request = okhttp3.Request.Builder()
.url(url)
.build()
val response = httpClient.newCall(request).execute()

fileDao.add(
FileDatabaseEntity(
domain = url,
value = responce.body?.bytes() ?: ByteArray(0),
)
)
} catch (e: Exception) {
AppLogger.tag(TAG).e("Processing $url| Error: $e")
}
Моя сущность базы данных выглядит так:

Код: Выделить всё

@Entity(tableName = FILE)
class FileDatabaseEntity(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = ID)
val id: Long = 0,

@ColumnInfo(name = DOMAIN)
val domain: String,

@ColumnInfo(name = VALUE, typeAffinity = ColumnInfo.BLOB)
var value: ByteArray,
) {
companion object {
const val FILE = "file"
const val ID = "id"
const val DOMAIN = "domain"
const val VALUE = "value"
}
}
но в данном случае при попытке добавить объект в базу данных с помощью

Код: Выделить всё

    @Insert
fun add(file: FileDatabaseEntity)
Я получаю сообщение об ошибке java.lang.IllegalStateException: закрыто в блоке catch для метода добавления.
При этом, если я специально укажу значение только как ByteArray(0) — сохраняется запись с пустым значением для этого поля. Также корректно работает, если в качестве типа поля указать строку со случайным значением (что говорит о том, что база данных в целом настроена правильно - я могу писать, читать, удалять записи таблицы).
В чем моя ошибка при сохранении ByteArray в таблице Room?

Подробнее здесь: https://stackoverflow.com/questions/787 ... m-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»