This is work in progress. Key functionality is likely still missing. Although using it with the Room Persistence Library documentation seems to work well. The Lucidchart app is using it successfully in production.
In your project:
# project/plugins.sbt
addSbtPlugin("com.lucidchart" % "sbt-android-room" % "0.0.12")
# build.sbt
libraryDependencies += "com.lucidchart" %% "android-room" % "0.0.12"
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)
enablePlugins(AndroidApp, RoomPlugin)
The Room Persistence Library documentation explains usage. There are a few caveats you should be aware of:
You must use the @RoomEntity
annotation provided by android-room
instead of @Entity
(or you will have to create your own setters):
@RoomEntity()
case class Thing(@PrimaryKey id: Int, name: String)
You should use the @RoomQuery
annotation provided by android-room
instead of @Query
. It works the same as @Query
If you opt to go ahead and use @Query
directly, when you reference interpolated parameters, instead of referencing them by name, you have to reference them by arg0
, arg1
, etc.
@Dao
abstract class ThingDao {
@RoomQuery("SELECT * FROM Thing WHERE id = :id AND name = :name")
def find(id: Int, name: String)
@Query("SELECT * FROM Thing WHERE id = :arg0 AND name = :arg1")
def find(id: Int, name: String)
}