【问题标题】:facing issue with @Relation in roomdb android在roomdb android中面临@Relation的问题
【发布时间】:2020-05-05 19:17:31
【问题描述】:
 public class StockRelation extends Item {
        @Relation(parentColumn = "mpc", entityColumn = "itempc", entity = Location.class)
        public List<Location> locationList;
    }

    public class RStockRelation extends StockRelation{
       @Relation(parentColumn = "mpc", entityColumn = "location_itemid", entity = Location.class)
       public List<Location> locationList;
    }

这里只有@Relation 发生变化,而其他事情是一样的。 我想根据查询本身的 Location 表中的列对 locationlist 进行排序。 那么如何在一个对象而不是两个不同的 StockRelation 和 RStockRelation 中拥有最终数据。 有没有其他方法可以解决这个问题

【问题讨论】:

    标签: java android android-sqlite android-room


    【解决方案1】:

    据我了解,您有两个表(实体),通常您希望在不同字段上应用从第一个表到第二个表的两个左连接 - 以获得连接两个不同位置列表的第一个对象(但使用 Room - 关系注释而不是左连接)。

    如果这是你想要的,试试这个:

    public class StockRelation extends Item {
    @Relation(parentColumn = "mpc", entityColumn = "itempc", entity = Location.class)
    public List<Location> locationList1;
    @Relation(parentColumn = "mpc", entityColumn = "location_itemid", entity = Location.class)
    public List<Location> locationList2;
    }
    

    【讨论】:

    • 是的,使用左连接我们可以做到这一点,但所有位置对象将是分开的,不会按 mpc 列分组,每个对象只有一个位置。而您的解决方案会给我两个类似重复的列表,如果项目超过 1000 个,它将占用更多内存
    • 好吧,那么我建议您在帖子中添加一些简单的示例,其中包含表中的数据以及您希望通过表关系获得哪些输出。否则,从文本中不清楚您要解决什么具体任务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多