【问题标题】:Filter parent and child at Realm - Android在 Realm 过滤父子节点 - Android
【发布时间】:2020-04-24 04:06:11
【问题描述】:

我有两个类,我映射为 RealmObject,我想做一个查询来过滤父级和子级。

查询将过滤所有大于传递日期的产品,并在其中过滤所有日期大于传递日期的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);
}

【问题讨论】:

    标签: java android realm realm-mobile-platform


    【解决方案1】:
    //@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 从未添加过,我认为他们也不会添加它,所以你必须手动执行此操作。 :(

    【讨论】:

    • 不幸的是它不起作用,现在我正在手动操作,但至少我知道没有其他解决方案。谢谢@EpicPandaForce
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多