从 Objectbox 查询返回的对象是否与 ToMany<> 关系中的对象相同?

Is the returned object from an Objectbox query the same instance than the object in the ToMany<> relation?

感谢您在 ObjectBox 上所做的工作,我最近发现了它,它太棒了:)

然而,我有一个我不明白的问题:我尝试使用查询,尤其是 "find" 和 "findFirst" 查询。我尝试从盒子中取出一个特定的对象,以便 return 它,并将它从盒子中移除。

我的代码是 (抱歉,它是法语的) :

public DeplacementProvoque recupererEtRetirerDeplacementProvoque() {

    QueryBuilder<DeplacementProvoque> builder = DeplacementProvoque.deplacementProvoqueBox.query();
    builder.equal(DeplacementProvoque_.deplacementsProvoquesAssocieId, this.id)
           .equal(DeplacementProvoque_.estEnSursis, false);

    DeplacementProvoque deplacementProvoque = builder.build().findFirst();   // <<<< Use the Query

    listeDeplacementsProvoques.remove(deplacementProvoque);                  // <<<< Try to remove the object

    return deplacementProvoque;
}

我注意到从查询中得到的 DeplacementProvoque 是好的对象(与预期的 ID 相同)但不是同一个实例。所以 remove() 不起作用。

我可以通过迭代 ToMany<> 列表来识别对象的良好实例并将其删除来解决这个问题。

但我想知道这种行为是正常的,还是我做错了什么?也许我错误地使用了 ToMany<> 列表,导致了这个结果?

谢谢:)

朱利安

PS : 对于我可能的英语错误感到抱歉

回答标题问题:不会,查询时总是得到一个最新数据的新实例。

要回答您的实际问题:假设 listeDeplacementsProvoquesToMany(您没有指定),您可以使用 ToMany.removeById(entityId).

或者,您可以为 DeplacementProvoque 实体实施 hashCode()equals()。然后 ToMany.remove(entity) 将按预期工作。