【问题标题】:Room error in query columns return查询列中的房间错误返回
【发布时间】:2018-08-28 00:01:42
【问题描述】:

我已经看到了这个问题room-error-the-columns-returned-by-the-query-does-not-have-the-fields-fieldname,但我无法将它应用到我自己的错误中。

这是我的Movie 课程

    @Entity
    public class Movie {

        @PrimaryKey
        @NonNull
        public String id;

        @ColumnInfo
        public String name;

        @ColumnInfo
        public String title;
    }

这是我的UpcomingMovies 课程

@Entity(
        foreignKeys = {
        @ForeignKey(
                entity = Movie.class,
                parentColumns = "id",
                childColumns = "movieId")
        },
        indices = @Index("movieId")
)
@TypeConverters(MovieConverter.class)
public class UpcomingMovies {

    @PrimaryKey(autoGenerate = true)
    public int id;

    @ColumnInfo
    public int movieId;

    @ColumnInfo
    public Movie movie;
}

我正在尝试运行的查询,我想获取电影列表

@Query("Select movie from UpcomingMovies")
LiveData<List<Movie>> loadUpcomingMovies();

我遇到的具体错误

错误:查询返回的列在 *.Model.POJOs.Movie 中没有字段 [id],即使它们被注释为非空或原始。查询返回的列:[电影]

我在这里错过了什么?

编辑:添加MovieConverter

public class MovieConverter {

    @TypeConverter
    public String movieToString(Movie movie) {
        return new Gson().toJson(movie);
    }

    @TypeConverter
    public Movie stringToMovie(String src) {
        return new Gson().fromJson(src, Movie.class);
    }
}

【问题讨论】:

  • 添加MovieConverter.class代码
  • @TomasJablonskis 完成

标签: android android-room android-livedata


【解决方案1】:

试试这个查询:

@Query("Select * from UpcomingMovies")
LiveData<List<UpcomingMovies>> loadUpcomingMovies();

并且在你的 UpcomingMovies 类中有一个 GETTER 方法:

public Movie getMovie() {
    return this.movie;
}

您还可以使用此查询获取电影列表:

@Query("Select * from Movie")
LiveData<List<Movie>> loadUpcomingMovies();

祝你好运:)

【讨论】:

  • 谢谢兄弟,错误消失了,你能解释一下吗?谢谢你的时间:)
  • @Greggz 问题是,您试图获取 Movie 对象的列表,而 UpcomingMovies 只有一个实例。
  • 但我不能只返回即将上映的电影列表吗?
  • 嗯..我虽然每一行都会有一个电影
  • 没有。如果我是你,我最好在 SQL 查询中使用特定参数查询 Movie 表,以获取特定的电影列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-21
  • 2022-06-16
相关资源
最近更新 更多