I\'m converting a project to Kotlin and I\'m trying to make my model (which is also my entity) a data class I intend to use Moshi to convert the JSON responses from the API<
Don't use to dataclass,use normal class instead. This method will solve problem
I had the same issue. You can move the @Ignore fields to class body. For example :
@Entity(tableName = "movies")
data class MovieKt(
@PrimaryKey
var id : Int,
var title: String
){
//here
@Ignore var overview: String
}
I think that a good option for resolve it is:
@Entity(tableName = "movies")
data class MovieKt(
@PrimaryKey
var id : Int = 0,
var title: String = "",
var overview: String = "",
var poster_path: String = "",
var backdrop_path: String = "",
var release_date: String = "",
var vote_average: Double = 0.0,
var isFavorite: Int = 0
)
Same bug, much stranger solution: Do not return cursor using reactivex Maybe<Cursor>
on your Dao. Flowable
, Single
, and Observable
did not work either.
Simply bite the bullet and make the reactive call outside the Dao request. Before:
@Dao
interface MyDao{
@Query("SELECT * FROM mydao")
fun getCursorAll(): Flowable<Cursor>
}
After:
@Dao
interface MyDao{
@Query("SELECT * FROM mydao")
fun getCursorAll(): Cursor
}
Meta:
Android Studio 3.2
Build #AI-181.5540.7.32.5014246, built on September 17, 2018
JRE: 1.8.0_152-release-1136-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.12.6
Today I was having this problem. I used @Ignore
, that is why I got the error. To solve this I created a secondary constructor. So my code looks something like this:
@Entity(tableName = "profile")
data class Profile(
@field:SerializedName("id") @PrimaryKey @ColumnInfo(name = "id") var id:Long,
@field:SerializedName("foo") @ColumnInfo(name = "foo") var foo:String?,
@field:SerializedName("bar") @Ignore var Bar:String?
){
constructor(id:Long, foo:String) : this(id, foo, null)
}
This worked for me.
For me, I was using 'lat' & 'long' as a variable name in the data(Entity) class for kotlin so renaming to latitude & longitude it worked.
Not working:
@Entity(tableName = "table_User")
data class User(@PrimaryKey var userId : Int, @ColumnInfo(name = "first_name")
var firstName: String
, @ColumnInfo(name = "last_name") var lastName: String
, @ColumnInfo(name = "password") var password: String
, @ColumnInfo(name = "dob") var dob: Long
, @ColumnInfo(name = "address") var address: String
, @ColumnInfo(name = "lat") var latitude: Double
, @ColumnInfo(name = "long") var longitude: Double) {
}
Working:
@Entity(tableName = "table_User")
data class User(@PrimaryKey var userId : Int, @ColumnInfo(name = "first_name")
var firstName: String
, @ColumnInfo(name = "last_name") var lastName: String
, @ColumnInfo(name = "password") var password: String
, @ColumnInfo(name = "dob") var dob: Long
, @ColumnInfo(name = "address") var address: String
, @ColumnInfo(name = "latitude") var latitude: Double
, @ColumnInfo(name = "longitude") var longitude: Double) {
}