扩展 Room 实体并使用相同的 DAO 和存储库是一种好的做法吗?
Is a good practice to extend a Room Entity and use the same DAO and Repository?
我想创建两个具有相同 字段 的实体,我看到我可以扩展一个实体来继承字段,我会想知道这样做是否是一种好的做法,以及对这些实体使用单个 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
}
正如@MergimRama 所说,这不是一个好主意。使用嵌入对象。
对于嵌入式对象,我应该创建一个 class,其中包含我要使用的字段:
public class UserName {
public String firstName;
public String lastName;
}
并在我的实体中重复使用 class 字段,就像这样:
@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
}
我想创建两个具有相同 字段 的实体,我看到我可以扩展一个实体来继承字段,我会想知道这样做是否是一种好的做法,以及对这些实体使用单个 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
}
正如@MergimRama 所说,这不是一个好主意。使用嵌入对象。
对于嵌入式对象,我应该创建一个 class,其中包含我要使用的字段:
public class UserName {
public String firstName;
public String lastName;
}
并在我的实体中重复使用 class 字段,就像这样:
@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
}