Есть ли способ установить для значений Nullable @Embedded
классов данных в комнате значение null
при вставке с помощью OnConflictStrategy.REPLACE
? Я делаю это в данный момент:
//in dao
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertImage(image: ImageEntity)
и сущность:
@Entity(tableName = "images")
data class ImageEntity(
@PrimaryKey
val imageGuid: String = UUID.randomUUID().toString(),
@Embedded(prefix = "server_")
val serverImage: ServerImageEntity? = null,
@Embedded(prefix ="device_")
val deviceImage: DeviceImageEntity? = null
)
data class ServerImageEntity(
val imageGuid: String,
val name: String,
val description: String?,
val url: String,
val status: SyncStatus = SyncStatus.IDLE
)
data class DeviceImageEntity(
val imageGuid: String = UUID.randomUUID().toString(),
val name: String = "",
val description: String? = null,
val uri: Uri,
val status: SyncStatus = SyncStatus.IDLE
)
, когда я пытаюсь назвать это так:
val image = database.imageDao.getImageByGuid(imageGuid)
//later on
database.imageDao.insertImage(image.copy(serverImage = null))
Я получаюNPE говорит, что imageGuid
для serverImage
является нулевым. Можно ли вернуть пустые поля @Embedded
обратно в ноль, как только они будут установлены?