我有房间问题.
我有一个实体:
@Entity(tablename = "Entity")data class Entity(val recipIEnts: List<ID>?) { @ColumnInfo(name = "ID") @PrimaryKey(autoGenerate = true) var ID: Long = 0}
如您所见,它包含ID列表(typealias ID = Long)
所以,我做了TypeConverter:
@TypeConverterfun getlistofLongs(data: String?): List<ID> { if (data == null) { return Collections.emptyList() } val ListType = object : Typetoken<List<Long>>() {}.type return gson.fromJson(data, ListType)}@TypeConverterfun convertListToString(IDs: List<ID>): String = gson.toJson(IDs)
但我有一个问题,我无法正确查询此列表:
@query("select count(*) from Message where recipIEnts in (:recipIEnts)")fun count(recipIEnts: List<ID>?): Int
如您所见,我需要比较两个列表(实体列表和方法列表)并从方法列表中获取包含ID的所有实体,但此查询始终返回0.我读过TypeConverter列表可能有问题,但我可以找不到任何解决方案.
解决方法:
用@Rawquery解决它:
" WHERE recipIEnts liKE ${recipIEnts.joinToString(",", "\"", "\"")}"
结束编辑TypeConvertor:
@TypeConverterfun getlistofLongs(data: String?): List<Long> { if (data == null) { return Collections.emptyList() } val ListType = object : Typetoken<List<Long>>() {}.type return gson.fromJson("[$data]", ListType)}@TypeConverterfun convertListToString(IDs: List<Long>?): String? { if (IDs == null) return null var IDsstring = gson.toJson(IDs) IDsstring = IDsstring.replace("]", "") IDsstring = IDsstring.replace("[", "") return IDsstring}
总结 以上是内存溢出为你收集整理的java – 房间 – 比较实体中的列表全部内容,希望文章能够帮你解决java – 房间 – 比较实体中的列表所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)