with - room database developer android




방의 지속성:오류:엔터티와 Pojos에 사용 가능한 공용 생성자가 있어야합니다. (7)

Kotlin은 매개 변수 이름으로 오랫동안 사용할 수 있지만, 방이 Java 코드를 생성 할 때는 작동하지 않습니다.

저는 프로젝트를 Kotlin으로 변환하고 있습니다. 내 모델 (내 개체이기도합니다)을 API에서 JSON 응답을 변환하기 위해 Moshi를 사용하려는 데이터 클래스로 만들려고합니다.

@Entity(tableName = "movies")
data class MovieKt(
    @PrimaryKey
    var id : Int,
    var title: String,
    var overview: String,
    var poster_path: String,
    var backdrop_path: String,
    var release_date: String,
    var vote_average: Double,
    var isFavorite: Int
)

다음 오류의 앱 원인을 만들 수 없습니다.

엔티티와 Pojos에는 사용 가능한 public 생성자가 있어야합니다. 빈 생성자 또는 매개 변수가 필드와 일치하는 생성자 (이름 및 유형)를 가질 수 있습니다. 입력란을 찾을 수 없습니다.

내가 찾은 사례가 this 멀지는 않습니다.

그것을 해결하는 방법에 대한 아이디어?


나는 그것을 해결하기위한 좋은 선택이라고 생각한다.

@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
)

나는이 문제에 OP와 같은 비 기본 항목과 관련된 목록을 포함하는 엔티티 (모든 필드가 올바르게 초기화 된 var s가 여기에 나와 있습니다. 예 :

@Entity(tableName = "fruits")
data class CachedFruitEntity(
        @PrimaryKey var id: Long = 0L,
        @Embedded(prefix = "buyer_") var buyerEntity: CachedBuyerEntity? = null
        @TypeConverters(VendorsConverter::class)
        var vendorEntities: List<CachedVendorEntity?> = listOf()))

즉, 임베디드 필드가 있고 실제로 필요한 것은 납품 업체 엔티티 목록에 대한 유형 변환기였습니다 (컴파일러가 일반적인 Error:(58, 31) error: Cannot figure out how to save this field into database. You can consider adding a type converter for it. 하지 않음 Error:(58, 31) error: Cannot figure out how to save this field into database. You can consider adding a type converter for it. 따라서이 솔루션은 내 대답 과 매우 유사합니다.

Google 아키텍처 구성 요소 github 스레드 는이 오해의 소지가있는 오류에 대한 자세한 정보가 있지만 문제가 아직 해결되지 않았는지 확실하지 않습니다.


나를 위해 일한 것 :

@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
)

대신 변수 이름을 변경해보십시오.



https://issuetracker.google.com/issues/62851733

나는 이것이 @ Relation의 투영 버그 인 것을 발견했다! Kotlin 언어 문제가 아닙니다. 기반 구글 GithubBrowserSample 자바도 happend 오류지만, 다른 오류 메시지.

아래는 내 kotlin 코드입니다.

data class UserWithCommunities(
        @Embedded
        var user: User = User(0, null),

        @Relation(parentColumn = "id",
                entityColumn = "users_id",
                entity = CommunityUsers::class,
                projection = arrayOf("communities_id")) // delete this line.
        var communityIds: List<Int> = emptyList()
)

권리:

data class UserWithCommunities(
        @Embedded
        var user: User = User(0, null),

        @Relation(parentColumn = "id",
                entityColumn = "users_id",
                entity = CommunityUsers::class)
        var communityList: List<CommunityUsers> = emptyList()
)






android-architecture-components