Java Android ROOM получить объект с отделением - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть это:

    @Entity(tableName = "director"/*,
            indices = {@Index(value = "full_name", unique = true)}*/)
    public class Director {
        @PrimaryKey(autoGenerate = true)
        @ColumnInfo(name = "did")
        public int id;
        @ColumnInfo(name = "full_name")
        @NonNull
        public String fullName;


@Entity(tableName = "movie",
        foreignKeys = @ForeignKey(entity = Director.class,
                parentColumns = "did",
                childColumns = "directorId",
                onDelete = ForeignKey.CASCADE),
        indices = {@Index("title"), @Index("directorId")})
public class Movie {
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "mid")
    public int id;
    @ColumnInfo(name = "title")
    @NonNull
    public String title;
    @ColumnInfo(name = "directorId")
    public int directorId;

Когда я получаю все фильмы, я получаю идентификатор директора.Что я должен сделать, чтобы сгенерировать это:

public class MovieWithDirector {

    Movie movie;
    Director director;
}

Я могу получить пользователя, а затем получить directerByID, но я не знаю, если это лучший способ сделать это

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я думаю, вы хотите использовать @ Relation

https://developer.android.com/reference/android/arch/persistence/room/Relation

0 голосов
/ 26 ноября 2018

Я бы сказал, что лучший способ выполнить это действие - написать запрос с объединением:

SELECT  movie.title, director.fullname 
FROM director 
INNER JOIN movie 
ON movie.directorId=director.id 
WHERE director.id= :passed_value

Конечно, вам понадобится пользовательский класс для хранения результата запроса.Если вы посмотрите пример из этой ссылки и объединитесь с запросом выше, вы сможете решить свою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...