Recent Posts
Recent Comments
에르노트
Room 라이브러리 어노테이션 에러 해결 본문
구글 JetPack component에 포함되어 안드로이드 로컬 데이터베이스 접근을 도와주는 Room 라이브러리를 공부하던 중 'Entity class must be annotated with @Entity'라는 에러를 겪었다. 다행히 별 복잡한 문제는 아니었고 에러문구 자체가 해결법인 간단한 문제였다.
전에 사용해 본 또 다른 모바일 로컬 DB인 Realm에서는 RealmObject을 상속받는 형태로 Entity를 정의했었다. 그런데 Room Database에서는 일반적인 자바 클래스 혹은 코틀린의 데이터 클래스를 그대로 사용한다. 따라서 내가 작성한 클래스가 DB의 엔티티로 쓰일 것임을 명시해줘야하고, @Entity 어노테이션이 바로 그 표식인 것이다.
실제 예시는 아래와 같다.
@Entity
data class History(
@PrimaryKey(autoGenerate = true) val uid: Int,
val type: Int,
val origin: String,
val shorten: String,
val createdAt: String
)
+ 비슷한 맥락으로 DAO(데이터 접근 객체) 인터페이스에도 @Dao라는 어노테이션을 붙여줘야만 한다. 안그러면 역시 'Dao class must be annotated with @Dao' 라는 에러를 겪게 된다.
'Dev > Android' 카테고리의 다른 글
[안드로이드] 다른 앱에서 공유 목록에 내 앱 띄우기 (0) | 2020.02.12 |
---|---|
안드로이드 카메라 프리뷰 예제(Camera2 API, 코틀린) (6) | 2020.02.07 |
Anko를 대체할 안드로이드 확장 라이브러리 Splitties (1) | 2020.01.20 |
안드로이드 8.0 Oreo에서만 발생하는 비정상 종료 해결법(Autofill Framework) (0) | 2019.10.01 |
Comments