【问题标题】:Find if String[] contains String in Room database Android查找 String[] 是否在 Room 数据库 Android 中包含字符串
【发布时间】:2020-03-10 11:11:50
【问题描述】:

我想在我的表中搜索有一个字符串数组并且它应该包含一个字符串。

这是我的模型

@ColumnInfo(name = DbConstants.ColumnNames.ConversationData.AGENTS_ID)
@SerializedName("agentsId")
public String[] agents;

这是我的 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);
}

这是 DAO 查询

@Query("select * from conversations where channelId = :channelId AND " +
        " agentsId LIKE :agentId ORDER BY updateTimeStamp DESC")
List<ConversationData> getMyConversations(String channelId, String agentId);

一切都设置得很完美。我想问题是ConverterQuery 之一

但在字符串数组中找不到agentId。

【问题讨论】:

    标签: android sqlite android-room dao


    【解决方案1】:

    对于那些寻求答案的人。

    问题出在我的查询上。我刚刚用这个更新了它。

    @Query("select * from conversations where channelId = :channelId AND status = :status AND" +
                " agentsId LIKE '%' || :agentId || '%' ")
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2017-03-18
      • 1970-01-01
      • 2021-03-05
      • 2013-03-14
      • 2017-06-21
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多