外键是否应该在 Room Persistence Library 中有相应的 getter 和 setter?
Should Foreign Keys have corresponding getters and setters in Room Persistence Library?
以下代码显示我创建了一个名为 class 的实体 UserGeneral
。该实体独有的每个列都有相应的 getter 和 setter。但是,外键没有 getter 和 setter。 我需要为 user_details_id
和 user_location_id
提供 getter 和 setter 吗?
@Entity(
tableName = "User_General",
indices = {
@Index("user_details_id"),
@Index("user_location_id")
},
foreignKeys = {
@ForeignKey(
entity = UserDetails.class,
parentColumns = "user_details_id",
childColumns = "user_details_id"
),
@ForeignKey(
entity = UserLocation.class,
parentColumns = "user_location_id",
childColumns = "user_location_id"
)
}
)
public class UserGeneral {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "user_general_id")
private int user_general_id;
@ColumnInfo(name = "first_name")
private String first_name;
@ColumnInfo(name = "last_name")
private String last_name;
@ColumnInfo(name = "flagged_delete")
private boolean flagged_delete;
@ColumnInfo(name = "user_details_id")
private int user_details_id;
@ColumnInfo(name = "user_location_id")
private int user_location_id;
public int getUser_general_id() {
return user_general_id;
}
public void setUser_general_id(int user_general_id) {
this.user_general_id = user_general_id;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public boolean isFlagged_delete() {
return flagged_delete;
}
public void setFlagged_delete(boolean flagged_delete) {
this.flagged_delete = flagged_delete;
}
}
你必须提供 getter 否则你会得到类似的东西:
error: Cannot find getter for field.
private int user_details_id;
setter 或在构造函数中传递参数被你使用。如果您没有这样的方法,那么您将无法正确 初始化对象。在没有设置器/构造函数的情况下, user_details_id 将始终为 0(其他外键也是如此),因此您的所有 UserGeneral 实体都将指向相同的用户详细信息/位置。
以下代码显示我创建了一个名为 class 的实体 UserGeneral
。该实体独有的每个列都有相应的 getter 和 setter。但是,外键没有 getter 和 setter。 我需要为 user_details_id
和 user_location_id
提供 getter 和 setter 吗?
@Entity(
tableName = "User_General",
indices = {
@Index("user_details_id"),
@Index("user_location_id")
},
foreignKeys = {
@ForeignKey(
entity = UserDetails.class,
parentColumns = "user_details_id",
childColumns = "user_details_id"
),
@ForeignKey(
entity = UserLocation.class,
parentColumns = "user_location_id",
childColumns = "user_location_id"
)
}
)
public class UserGeneral {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "user_general_id")
private int user_general_id;
@ColumnInfo(name = "first_name")
private String first_name;
@ColumnInfo(name = "last_name")
private String last_name;
@ColumnInfo(name = "flagged_delete")
private boolean flagged_delete;
@ColumnInfo(name = "user_details_id")
private int user_details_id;
@ColumnInfo(name = "user_location_id")
private int user_location_id;
public int getUser_general_id() {
return user_general_id;
}
public void setUser_general_id(int user_general_id) {
this.user_general_id = user_general_id;
}
public String getFirst_name() {
return first_name;
}
public void setFirst_name(String first_name) {
this.first_name = first_name;
}
public String getLast_name() {
return last_name;
}
public void setLast_name(String last_name) {
this.last_name = last_name;
}
public boolean isFlagged_delete() {
return flagged_delete;
}
public void setFlagged_delete(boolean flagged_delete) {
this.flagged_delete = flagged_delete;
}
}
你必须提供 getter 否则你会得到类似的东西:
error: Cannot find getter for field.
private int user_details_id;
setter 或在构造函数中传递参数被你使用。如果您没有这样的方法,那么您将无法正确 初始化对象。在没有设置器/构造函数的情况下, user_details_id 将始终为 0(其他外键也是如此),因此您的所有 UserGeneral 实体都将指向相同的用户详细信息/位置。