Greggz
Greggz

Reputation: 1799

Room error in query columns return

I've seen this issue room-error-the-columns-returned-by-the-query-does-not-have-the-fields-fieldname but I cant apply it to my own error.

This is my Movie class

    @Entity
    public class Movie {

        @PrimaryKey
        @NonNull
        public String id;

        @ColumnInfo
        public String name;

        @ColumnInfo
        public String title;
    }

This is my UpcomingMovies class

@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;
}

The query I'm trying to run, which I want to get a List of movies

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

And the specific error I'm getting

error: The columns returned by the query does not have the fields [id] in *.Model.POJOs.Movie even though they are annotated as non-null or primitive. Columns returned by the query: [movie]

What've I missed here ?

Edit: Added 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);
    }
}

Upvotes: 0

Views: 2353

Answers (1)

Tomas Jablonskis
Tomas Jablonskis

Reputation: 4376

Try this query:

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

And have a GETTER method in your UpcomingMovies class:

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

You can also get list of movies with this query:

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

Good luck :)

Upvotes: 1

Related Questions