Комната @ Связь с составным первичным ключом - PullRequest
0 голосов
/ 15 мая 2018

мой вопрос является расширением этого вопроса (также и моего :)) -> Комбинация номеров Первичный ключ ссылка на внешний ключ Итак, если у меня есть этот класс:

public class FoodWithIngredients extends Food{

    @Relation(parentColumn = "id", entityColumn = "food_id", entity = 
    Ingredient.class)
    private List<Ingredient> mIngredients;

}

Но PrimaryKey таблицы "Еда" - composite (primaryKeys = {"id", "language_id"}).

Как я могу сделать так, чтобы @Relation возвращала записи, где "parentColumn = {"id", "language_id"}, entityColumn = {"food_id", food_language_id}"?

1 Ответ

0 голосов
/ 18 июня 2019

Я нашел обходной путь. Но это повлияет на производительность, я полагаю. Вам необходимо добавить специальный метод получения в поле отношения, которое будет фильтровать результаты с другими частями составного первичного ключа.

В вашем случае это будет выглядеть так:

public class FoodWithIngredients {

    @Embedded
    private Food food;

    @Relation(parentColumn = "id", entityColumn = "food_id", entity = 
    Ingredient.class)
    private List<Ingredient> mIngredients;

    public List<Ingredient> getIngredients() {
        List<Ingredient> result = List<Ingredient>();

        for (ingredient in mIngredients) {
            if (ingredient.foodLanguageId == food.languageId) {
                result.add(ingredient);   
            }
        }

        return result;
    }

}
...