我有两个实体看起来像这样(简化为阅读目的)。
@Entity
public class Machine {
@PrimaryKey
private long id
}
@Entity
public class MachineType {
@PrimaryKey
private long id
}我想要的是机器实体有一个机器类型。我尝试了外键,但我的问题是它根本不像包含了外部实体的Spring等效持久性库(我不知道如何解释得足够好)。以下是春季REST的一个示例:
{
"id": 1,
"name": "foo",
"machineType": {
"id": 1,
"name": "bar"
}
}而带外键的房间是这样的:
{
"id": 1,
"name": "foo",
"machineType_id": 1
}当我将对象放回API时,这会给我带来各种各样的麻烦。所以我尝试使用@Relation注释,因为这听起来像我所需要的,但是这只会产生一个错误,因为来自相关对象的列包含在主实体中,所以我得到了两个"id“列。
错误:多个字段具有相同的columnName: id。字段名: id,machineType > id。
请帮帮忙。我是不是走错路了?我的问题有更好的解决办法吗?
发布于 2018-04-11 11:36:21
当您插入数据更改表列名时,如下面所示,您可以在房间数据库中指定列名。
@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;https://stackoverflow.com/questions/49770020
复制相似问题