如何在greenDAO中设置一对多的关系?

Posted

技术标签:

【中文标题】如何在greenDAO中设置一对多的关系?【英文标题】:How to set a one-to-many relationship in greenDAO? 【发布时间】:2020-11-02 04:11:38 【问题描述】:

希望你有一个美好的一天。

我是 greenDAO 的新手,想知道如何在 android 应用程序中使用 greenDAO 对一对多关系进行建模,以便我可以检索属于 User 实体的 TestResult 实体列表。按照this 文档,我在User 实体类中使用了@ToMany 注释,在TestResult 中使用了@ToOne。但是,即使在使用 User 属性集持久化 TestResult 实体对象之后,检索相同的 User 也会导致其 TestResult 实体对象列表出现 null 错误。

如果你们能提供一些帮助,我将不胜感激。 谢谢。

【问题讨论】:

【参考方案1】:
@Entity
public class Customer 
    @Id private Long id;
 
    @ToMany(referencedJoinProperty = "customerId")
    @OrderBy("date ASC")
    private List<Order> orders;

 
@Entity
public class Order 
    @Id private Long id;
    private Date date;
    private long customerId;

客户和订单是两个实体。一位客户有多个订单。因为这个 customerId 在 order 实体中。

私人长客户ID;

在客户实体中,

 @ToMany(referencedJoinProperty = "customerId")
  @OrderBy("date ASC")
  private List<Order> orders;

参考 for details

【讨论】:

只是为了确认一下,客户和订单在不同的文件中对吧?如果是,那么我做了类似的事情,但例如,当使用 userID 集持久化一些 TestResult 对象时,我无法获得属于用户的 TestResult 实体列表。调试器总是显示客户的 TestResults 列表为空。 是的,两者都是单独的文件。请分享您的代码文件。让我看看 嗨,这里是我的实体类和 MainActivity 文件的链接drive.google.com/file/d/13El3z1b_z1ddfVkRPscl_iMH8pYO1eP9/…drive.google.com/file/d/1Q0q_RU7CfbU4ceGlLpFMviJjgKsiXbQU/…drive.google.com/file/d/1Urvvd1NbRyqRm1oW8hLuso71BSNYAAo4/…

以上是关于如何在greenDAO中设置一对多的关系?的主要内容,如果未能解决你的问题,请参考以下文章

具有多个相同类型的一对多关系的实体和GreenDAO

需要在 Laravel 4 的同一张表中设置一对多关系

保存一对多关系CoreData

如何在映射模型中设置反向关系的值?

如何在graphql突变中设置多对多关系?

在订购应用程序中设置核心数据关系