Как получить данные из @relation, где дочернее условие - PullRequest
0 голосов
/ 20 июня 2020

Я хочу получить данные из отношения «один к одному» с помощью @Relation, но с условием для дочернего элемента

@Entity
public class User {
    @PrimaryKey public long userId;
    public String name;
    public int age;
}

@Entity
public class Library {
    @PrimaryKey public long libraryId;
    public long userOwnerId;
    public String code;

}
public class UserAndLibrary {
    @Embedded public User user;
    @Relation(
         parentColumn = "userId",
         entityColumn = "userOwnerId"
    )
    public Library library;
}
@Transaction
@Query("SELECT * FROM User") // I want to get where library.code = "123"
public UserAndLibrary getUsersAndLibraries();

Данные, которые мне нужны, - это все данные от пользователя, где library.code = "123" Я знаю, что могу использовать @Embedded, но в моих данных много одинаковых имен, и я не хочу использовать префикс. Поэтому мне интересно, как это сделать, используя @ Relation

Спасибо

1 Ответ

0 голосов
/ 20 июня 2020

С @Relation вы не можете установить «дочернее» условие. Итак, ваш выбор, если вы не хотите иметь дело с объединениями таблиц - это заменить родительские / дочерние классы в UserAndLibrary:

public class UserAndLibrary {
    @Embedded public Library library;
    @Relation(
         parentColumn = "userOwnerId",
         entityColumn = "userId"
    )
    public User user;
}

и dao:

@Transaction
@Query("SELECT * FROM library Where code = :code") // now you can set condition
public UserAndLibrary getUsersAndLibraries(String code);
...