安卓房间关系



我有两个看起来像这样的实体(简化用于阅读目的)。

@Entity
public class Machine {
@PrimaryKey
private long id
}
@Entity
public class MachineType {
@PrimaryKey
private long id
}

我想要的是机器实体具有机器类型。 我尝试了外键,但我的问题是它根本不像包含外来实体的 Spring Boot 等效持久性库(我不知道如何很好地解释这一点)。下面是春季 REST-API 的一个例子:

{
"id": 1,
"name": "foo",
"machineType": {
"id": 1,
"name": "bar"
}
}

而带有外键的空间是这样的:

{
"id": 1,
"name": "foo",
"machineType_id": 1
}

在将对象放回 API 时,这给我带来了各种麻烦。 所以我尝试使用@Relation注释,因为这听起来像我需要的,但这只会产生错误,因为相关对象的列包含在主实体中,所以我得到了两个"id"列。

错误:多个字段具有相同的列名称:id。字段名称:id、计算机类型> id。

请帮忙。我是不是走错了路?我的问题有更好的解决方案吗?

当您插入数据更改表列名时,如下面的代码,您可以在房间数据库中给出列名。

@Entity
public class Machine {
@PrimaryKey
@ColumnInfo(name = "nId")
private long id;
@ColumnInfo(name = "machineType_id")
private long mId;
}
@Entity
public class MachineType {
@PrimaryKey
@ColumnInfo(name = "machineType_id")
private long id;
}

当您获得同一类的 API 响应时,该时间服务器的唯一键在服务器密钥中使用此关键字给出特定字段,如下所示..

@SerializedName("name")
@ColumnInfo(name="sName")
private String name;

在这种情况下,嵌入注释可能很有用。 嵌入式链接

因此,您需要做的是在 Machine 类中拥有一个 MachineType 对象,并用@Embedded对其进行注释。另外为了避免有两个同名的变量,在这种情况下是id,可以使用这个注解@ColumnInfo(name = "some_column_name")具有与变量名称不同的列名。

列信息链接

相关内容

  • 没有找到相关文章

最新更新