Фильтр родитель и потомок в Царстве - Android - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть два класса, которые я сопоставил как RealmObject, и я хотел бы сделать запрос, который отфильтрует как родительский, так и дочерний.

Запрос отфильтрует все продукты, которые превышают пройденную дату и внутри него отфильтровывают все compras, у которых дата больше, чем пройденная дата.

Возможно ли с запросом или мне действительно нужно выполнить запрос для продуктов и после того, как взять этот список и удалить compras, которые я надену не хотите?

public class Produto extends RealmObject implements Id{

@PrimaryKey
private Long id;

@Index
@Required
private String codigoBarras;

private String nome;
private String marca;
private String categoria;
private String subCategoria;
private Double quantidade;
private String unidade;
private byte[] imagemData;
private Date dataAlteracao;

private RealmList<Compra> compras;

...


public class Compra extends RealmObject implements Id{

@PrimaryKey
private Long id;

//@LinkingObjects("compras")
private Produto produto = null;

private Double preco;
private String local;
private String mercado;
private Date data;
private Boolean liquidacao = false;
private String observacao;

private Date dataAlteracao;

...


public List<Produto> buscarProdutoEComprasPorDataAlteracao(Long dataAlteracao) {
    RealmResults<Produto> results = realm.where(Produto.class)
            .greaterThan("dataAlteracao", new Date(dataAlteracao))
            .greaterThan("compras.dataAlteracao", new Date(dataAlteracao))
            .sort("codigoBarras")
            .findAll();
    return realm.copyFromRealm(results);
}

1 Ответ

0 голосов
/ 06 мая 2020
//@LinkingObjects("compras")
private Produto produto = null;

Вы можете заменить это на

@LinkingObjects("compras")
private final RealmResults<Produto> isComprasOfProdutos = null;

Хотя, если ваш текущий запрос не работает, к сожалению, Realm- Java не поддерживает SUBQUERY и Предикат ALL и https://github.com/realm/realm-java/issues/5730 никогда не добавлялись, и я не думаю, что они когда-либо добавят его, поэтому вам придется делать это вручную. (

...