Room @Transaction не запускается, однако запускаются отдельные функции - PullRequest
0 голосов
/ 05 ноября 2019

Моя сущность

@Entity(tableName = "user_table")
data class User(
val userID:String,
val userName:String,
val userRoleName:String,
val adminID:String,
val name:String,
val email:String,
val phoneNumber:String,
val adminType:String,
val batchID:String,
val centerID:String,
val batchName:String,
val centerName:String
) {
    @PrimaryKey(autoGenerate = true)
    var id: Int = 0
}

Мой Дао

@Dao
abstract class MDao {

    @Insert
    abstract suspend fun insert(user: User)

    @Query("select userID from user_table")
    abstract suspend fun getuserID():String

    @Query("select adminID from user_table")
    abstract suspend fun getadminID():String

    @Delete
    abstract suspend fun deleteUser(user: User)

    @Query("delete from user_table")
    abstract fun deleteUserTable()


    @Query("select count(*) from user_table")
    abstract suspend fun getUserTableCount() : Int

    @Transaction
    open suspend fun insertUser(user: User){
        deleteUserTable()
        insertUser(user)
    }
}

Я использую сопрограммы для использования этих функций, если я вызываю команды удаления и вставки один за другим, код выполняется гладко.

val dao :MDao = mDatabase(it).getDao()
                            dao.deleteUserTable()
                            dao.insert(user)

, но если я вызываю транзакцию, возникает ошибка:

val dao :MDao = mDatabase(it).getDao()
                            dao.insertUser(user)

ошибка:

java.lang.StackOverflowError: stack size 1042KB
        at kotlinx.coroutines.Job$DefaultImpls.get(Unknown Source:8)
        at kotlinx.coroutines.JobSupport.get(JobSupport.kt:27).....

иногда я также получаю сообщение об ошибке, что база данныхтолько для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...