Not sure how to handle insert method's return type. public abstract java.lang.Object insert(@org.jetbrains.annotations.NotNull()

Viewed 836

I am complete new to kotlin, and trying to build a notes app using MVVM architecture. But somewhere I go wrong and end up with this error. My kotlin version is 1.5.31

NoteDao.java:11: error: Not sure how to handle insert method's return type.
    public abstract java.lang.Object insert(@org.jetbrains.annotations.NotNull()

NoteDao.kt

@Dao
interface NoteDao {
    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insert(note:Note): Note

    @Delete
    suspend fun delete(note: Note): Note

    @Query("SELECT * FROM notes_table ORDER BY primary_key ASC")
    fun getAllNotes(): LiveData<List<Note>>
}

Note.kt

@Entity(tableName = "notes_table")
class Note(@ColumnInfo(name = "note_text", typeAffinity = TEXT) val text: String){
    @PrimaryKey(autoGenerate = true) @ColumnInfo(name="primary_key", typeAffinity = INTEGER) var id = 0
}

I am not sure how to handle this.

1 Answers

Try doing this:

@Dao
abstract class BaseDao<T : BaseEntity>(private val tableName: String) {
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    abstract suspend fun insert(entity: T): Long

    @Update
    abstract suspend fun update(entity: T)

    @Delete
    abstract suspend fun delete(entity: T)
}

abstract class BaseEntity {
    abstract val id: Long
}
Related