【问题标题】:Is a good practice to extend a Room Entity and use the same DAO and Repository?扩展房间实体并使用相同的 DAO 和存储库是一种好习惯吗?
【发布时间】:2021-01-29 06:21:35
【问题描述】:

我想创建两个具有相同字段的实体,我看到我可以将实体扩展为继承字段,我想知道这是否是一个好习惯这样做,如果对这些实体使用单个 DAO 和存储库有任何问题。

我想重用的实体

@Entity
public class LoggedUsers {
    @PrimaryKey
    public int id;
    public String firstName;
    public String lastName;
}

具有相同字段的新实体

@Entity
public class HistoryUsers extends LoggedUsers  {

        //Same fields of the other entity

}

【问题讨论】:

  • 对于这种情况,这不是一个好主意。相反,您应该在它们之间建立关系。
  • 我是一个初学者,你能告诉我怎么做或在哪里检查吗?
  • 你可以在这里找到一个很好的例子:developer.android.com/training/data-storage/room/relationships
  • 谢谢老兄!所以....只是为了澄清,假设我创建了一个名为“ UserName ”的类,其中声明了字段名称并在实体内部放置了“ @Embedded public UserName userName; ',我会让两个实体具有相同的字段名称,对吧?
  • 是的,它会将这些列添加到您要嵌入的实体中。

标签: android android-room android-rom room


【解决方案1】:

正如@MergimRama 所说,这不是一个好主意。使用嵌入的对象。

对于嵌入的对象,我应该创建一个包含我想使用的字段的类:

public class UserName {

    public String firstName;
    public String lastName;

}

然后用我的实体中的字段重用类,就像这样:

@Entity
public class LoggedUsers {

    @PrimaryKey public int id;

    @Embedded public UserName username;    //Here goes the fields

}

@Entity
public class HistoryUsers {

    @PrimaryKey public int id;

    @Embedded public UserName username;    //Here goes the fields

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多