如何在房间数据库中使用类型转换器保存的数组中查询整数?

时间:2019-02-11 19:02:30

标签: java android database android-room

我正在使用typeconverter将列表保存在Room数据库中。现在,我想查询数据库并检索列表中包含特定整数的对象。 例如: Object1 List包含整数1、2、3,而当我仅查询整数1时,它将检索对象1。

这是我正在尝试的: 我的Entiy:

Runnable

我的类型转换器:

Runnable r = new Runnable() {

    @Override
    public void run() {
        System.out.println("inside runnable");
        try {
            Thread.sleep(100000);
        } catch (InterruptedException e) {
           //
        }
    }
}

我的道:

@Entity(tableName = "exercises")
public class Exercise {

    @PrimaryKey(autoGenerate = true)
    private int id;
    @ColumnInfo(name = "api_id")
    private int apiId;
    @ColumnInfo(name = "exercise_name")
    private String exerciseName;
    @ColumnInfo(name = "image_path")
    private String imagePath;
    @ColumnInfo(name = "youtube_key")
    private String youtubeKey;
    @ColumnInfo(name = "exercise_type")
    private int exerciseType;
    @ColumnInfo(name = "muscle_group")
    private List<Integer> muscleGroup;
    @ColumnInfo(name = "secondary_muscles")
    private List<Integer> secondaryMuscles;
    @ColumnInfo(name = "notes")
    private String notes;

还有我的ViewModel:

@TypeConverter
    public static String fromList(List<Integer> list){
        Gson gson = new Gson();
        String json = gson.toJson(list);
        return json;
    }

    @TypeConverter
    public static List<Integer> fromString(String string){
        Type listType = new TypeToken<List<Integer>>() {}.getType();
        return new Gson().fromJson(string, listType);
    }

有人想知道我想要的是可能的吗?还是我需要像检索全部一样进行工作,而不是在for循环中进行选择?感谢您的投入。

0 个答案:

没有答案