راکت

مشکل با کتابخانه Room در اندروید استادیو

1 پاسخ

سلام وقتتون بخیر
من امروز اخرین نسخه room‌ رو در پروژه ام استفاده کردم و این خطا رو گرفتم :

Entities and POJOs must have a usable public constructor. You can have an empty constructor or a constructor whose parameters match the fields (by name and type). - kotlin.Unit

این در حالی هست که مدل من خیلی ساده است

@Entity
data class User(
    @PrimaryKey val id: Int,
    val name: String?,
    val email: String?,
    val avatar: String?
)
    // room
    def room_version = "2.4.1"
    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"
    implementation "androidx.room:room-ktx:$room_version"

نسخه کاتلین هم :‌ 1.6.0
نسخه گردل هم :‌

classpath "com.android.tools.build:gradle:7.0.4"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"

لطفا اگر به این مشکل خوردید راهنمایی کنید ممنون میشم.

ثبت پرسش جدید

پاسخ‌ها

1
احسان داوری
احسان داوری
@ehsndvr

تخصص: برنامه نویس

سلام صبح شما بخیر
اولین راه حل اینکه برای این کدتون یک سازنده (constructor) ایجاد بکنید
چرا باید کد سازنده ایجاد بکنید ؟ چون Room نمیدونه چطوری به کد های تولید شده جاوا بگه که چطوری فیلد های خالی رو مقدار دهی بکنه

@Entity
data class User(
    @PrimaryKey val id: Int,
    val name: String?,
    val email: String?,
    val avatar: String?
){
    constructor() : this(0, "", "", "" )
}

اینکارم میتونید انجام بدید:

@Entity
data class User(
    @PrimaryKey val id: Int?=0,
    val name: String?="",
    val email: String?="",
    val avatar: String?=""
)

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام