에르노트

Room 라이브러리 어노테이션 에러 해결 본문

Dev/Android

Room 라이브러리 어노테이션 에러 해결

두콩 2020. 1. 28. 23:28

구글 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' 라는 에러를 겪게 된다.


Comments