[Android Archeitecture Components] 룸이 멀티 모듈 프로젝트에서 처리하면 빠져요.

3139 단어 Android

현상.


룸의 Embbeded에 모조한 필드를 더해서 다른 모듈을 사용하는 반을 사용하면build가 통과되지 않습니다.
@Entity
class HogeEntity(
    @Primarykey
    val id: Long,
    @Embedded
    val hogeUser: HogeUser 
)

// HogeEntityとは別のmoduleで定義
data class HogeUser(
    val personId: PersonId,
    val name: Name,
    val height: Double,
    val weight: Double,
    val nickName: String
)
예를 들어 이런 반에서build을 시험해 보면 다음과 같은 오류가 발생할 수 있다
Error: 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).
Tried the following constructors but they failed to match:
Error:HogeUser(PersonId,Name,double,double,java.lang.String) : [arg0 : null, arg1 : null, arg2 : null, arg3 : null, arg4 : null, arg5 : null]

회피책

  • 오류 메시지에 기재된 대로 빈 concetructor를 정의하고 setter에서field에 값을 입력하는 스타일로 변경
  • Embeded 사용을 중지하고 Enity의 필드에 수동으로 넣기
  • 다른 모듈을 사용하지 않고 같은 모듈로 처리
  • 어떤 것도 미묘한데...
    다른 해결책이 있다면 알려주시면 좋겠네요

    참고 자료


    https://issuetracker.google.com/issues/67181813
    https://stackoverflow.com/questions/47833645/android-room-multi-module-project-in-kotlin

    좋은 웹페이지 즐겨찾기