Я использую следующий запрос в Android Комната для получения значений из двух таблиц, связанных внешним ключом. Item
- это внешний ключ Transaction
, связанный со столбцом upc
. unique_id
- это уникальный номер транзакции.
@Query("SELECT * FROM Transaction t INNER JOIN Item i ON i.upc=t.item_upc WHERE t.unique_id=:uniqueId")
LiveData<List<TransactionItem>> getTransactionItemsByUID(@NonNull final String uniqueId);
Когда я запускаю эту команду с уникальным идентификатором транзакции, запрос выбирает все строки в Transactions
, где upc
одинаковы, независимо от WHERE
пункт. В основном, выбираются транзакции с различными значениями unique_id
. Тем не менее, меня интересует только строка с точным соответствием unique_id
.
. Класс TransactionItem
определяется следующим образом.
// TransactionItem Model
@Embedded
public ItemModel itemModel;
@Relation(parentColumn = "upc", entityColumn = "item_upc", entity = Transaction.class)
public List<Transaction> transactions;
Я потратил два дня на поиск и поиск в Google но все еще не мог найти правильное решение. Что я здесь пропускаю?