Fixed
Status Update
Comments
yb...@google.com <yb...@google.com>
st...@gmail.com <st...@gmail.com> #2
hmm room builder cannot take converters because we need them at compile time BUT we can receive a converter factory instead of initializing them ourselves.
Then one can write a type converter producer similar to view models .
https://github.com/googlesamples/android-architecture-components/blob/master/GithubBrowserSample/app/src/main/java/com/android/example/github/viewmodel/GithubViewModelFactory.kt
Then one can write a type converter producer similar to view models .
ap...@google.com <ap...@google.com> #3
Yes, that would be very much appreciated!
Description
Version used: 2.0.0
Devices/Android versions reproduced on: Compile time error
@Dao
@TypeConverters(ControllerTypeConverters::class)
interface JobDao {
...
@Query("SELECT * FROM Job WHERE service IN (:services)")
fun getActiveJobs(services: List<Service>): LiveData<List<Job>>
}
object ControllerTypeConverters {
...
@TypeConverter
@JvmStatic
fun stringToOrderStatus(data: String?): Service? {
return if (data != null) Service.valueOf(data) else null
}
@TypeConverter
@JvmStatic
fun orderStatusToString(service: Service?): String? {
return service?.name
}
}
Fails when trying to run unit tests with
D:\...\JobDao.java:17: error: Query method parameters should either be a type that can be converted into a database column or a List / Array that contains such type. You can consider adding a Type Adapter for this.
java.util.List<? extends com.magentatechnology.emiratescontroller.model.Service> services);
If I replace the list with a single object, if works fine:
@Query("SELECT * FROM Job WHERE service = (:services)")
fun getActiveJobs(services: Service): LiveData<List<Job>>