1
resposta

Inner Join no Room Database

Criei tres modelos anotados com @Entity: Despesa, Fornecedor e Item. A "tabela" Despesa, tem campos preenchidos com o id dos outros dois com a intenção de criar relacionamento. Num método da classe DespesaDAO eu gostaria de retornar algo parecido com a seguinte pesquisa:


@Query("SELECT despesa.id, despesa.idFornecedor, despesa.data, despesa.idItem, despesa.quantidade, despesa.preco, fornecedor.nome, item.nome FROM item INNER JOIN (fornecedor INNER JOIN despesa ON fornecedor.id = despesa.idFornecedor) ON item.id = despesa.idItem WHERE (((despesa.idFornecedor)=:idFornecedor) AND ((despesa.data)=:data)); ") List despesas(int idFornecedor, Calendar data)

Sendo que no sistema já tem uma conversão de Calendar para Long


Pergunto: Como é feito no Room um método que envolva uma pesquisa entre diversas tabelas?

1 resposta

Fala Paulo, de boa ?

Cara tu precisa fazer um objeto que contenha todos os modelos e usar o esquema de relação entre as colunas...

Imagino que a anotação @Relation já deva resolver o seu problema.

https://developer.android.com/training/data-storage/room/relationships