Ali*_*ami 3 sqlite android dao android-room
我想在我的表中搜索有一个字符串数组并且它应该包含一个字符串。
这是我的模型
@ColumnInfo(name = DbConstants.ColumnNames.ConversationData.AGENTS_ID)
@SerializedName("agentsId")
public String[] agents;
Run Code Online (Sandbox Code Playgroud)
这是我的 TypeConverter
@TypeConverter
public String fromStringsToJson(String[] strings) {
if (strings == null)
return null;
return new Gson().toJson(strings);
}
@TypeConverter
public String[] fromJsonToStrings(String string) {
if (string == null)
return null;
Gson gson = new Gson();
Type type = new TypeToken<String[]>() {
}.getType();
return gson.fromJson(string, type);
}
@TypeConverter
public String fromStringMapToJson(Map<String, String> map) {
if (map == null)
return null;
Gson gson = new Gson();
Type type = new TypeToken<Map<String, String>>() {
}.getType();
return gson.toJson(map, type);
}
@TypeConverter
public Map<String, String> fromJsonToMap(String json) {
if (json == null)
return null;
Gson gson = new Gson();
Type type = new TypeToken<Map<String, String>>() {
}.getType();
return gson.fromJson(json, type);
}
Run Code Online (Sandbox Code Playgroud)
这是 DAO 查询
@Query("select * from conversations where channelId = :channelId AND " +
" agentsId LIKE :agentId ORDER BY updateTimeStamp DESC")
List<ConversationData> getMyConversations(String channelId, String agentId);
Run Code Online (Sandbox Code Playgroud)
一切都已经安排得很完美。我认为问题是其中之一Converter或Query
但它在字符串数组中找不到agentId。
对于那些寻求答案的人。
问题出在我的查询上。我刚刚用这个更新了它。
@Query("select * from conversations where channelId = :channelId AND status = :status AND" +
" agentsId LIKE '%' || :agentId || '%' ")
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
2240 次 |
| 最近记录: |