外键是否应该在 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_iduser_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 实体都将指向相同的用户详细信息/位置。