在 Realm 中过滤父项和子项 - Android
Filter parent and child at Realm - Android
我有两个 类 映射为 RealmObject,我想执行一个查询来过滤父项和子项。
查询将过滤所有大于传递日期的产品,并在其中过滤所有日期大于传递日期的产品。
是否可以通过查询或我真的需要执行产品查询,然后获取此列表并删除我不想要的商品?
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);
}
//@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 从未被添加或我认为他们会添加它吗,所以您必须手动执行此操作。 :(
我有两个 类 映射为 RealmObject,我想执行一个查询来过滤父项和子项。
查询将过滤所有大于传递日期的产品,并在其中过滤所有日期大于传递日期的产品。
是否可以通过查询或我真的需要执行产品查询,然后获取此列表并删除我不想要的商品?
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);
}
//@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 从未被添加或我认为他们会添加它吗,所以您必须手动执行此操作。 :(