android - 查询列中的房间错误返回
问题描述
我已经看到了这个问题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);
}
}
解决方案
试试这个查询:
@Query("Select * from UpcomingMovies")
LiveData<List<UpcomingMovies>> loadUpcomingMovies();
并在您的班级中有一个 GETTER 方法UpcomingMovies
:
public Movie getMovie() {
return this.movie;
}
您还可以使用此查询获取电影列表:
@Query("Select * from Movie")
LiveData<List<Movie>> loadUpcomingMovies();
祝你好运 :)
推荐阅读
- google-cloud-platform - 按今天日期查询 Google Big Query Table
- javascript - 如何比较php时间戳和jquery
- java - 使用 Java 检索所有托管设备(使用 Microsoft Graph API SDK)
- javascript - 如何使用 useState 和 React-redux-firebase 重新渲染
- python - 是否可以在标准 SpaCy 管道中使用外部矢量化器?
- c++ - 如何创建动态数组的 push_back 函数?
- python - Python 使用 "with open("random.txt") as file:" 防止文件访问期间的数据丢失
- r - 使用 R 将文本文件转换为表格
- python - ASCII动画闪烁python
- powershell - 从 CSV 用户列表中获取所有日历子文件夹