android中Gson和Room的Id问题(向客户端发送json)

android中Gson和Room的Id问题(向客户端发送json),android,gson,android-room,Android,Gson,Android Room,我对Gson和房间id有问题! 我使用json(库Gson和json)将数据发送到具有Room数据库实现的客户端(Android应用程序),我使用ID将客户端数据发送到Android,如下所示: {"map":{"date":"2020-01-15 15:13:42.0","botType":1,"botName":"ds","id":62,"userId":1,"accountKey":"dcab171a-b6cc-4583-b5fc-3e996100725a","status":0}} 我

我对Gson和房间id有问题! 我使用json(库Gson和json)将数据发送到具有Room数据库实现的客户端(Android应用程序),我使用ID将客户端数据发送到Android,如下所示:

{"map":{"date":"2020-01-15 15:13:42.0","botType":1,"botName":"ds","id":62,"userId":1,"accountKey":"dcab171a-b6cc-4583-b5fc-3e996100725a","status":0}}
我需要在客户端数据库中使用id准确地保存,但是房间会为这个对象生成一个新id,我能解决这个问题吗? 关于结构的其他说明:

超级班:

@Entity
public class SuperBean implements Serializable {
 @PrimaryKey(autoGenerate = true)
 public long id;
 @TypeConverters(DateConverter.class)
 public Date date = new Date();

 public long getId() {
     return id;
 }

 public void setId(long id) {
     this.id = id;
 }

 public Date getDate() {
     return date;
 }

 public void setDate(Date date) {
     this.date = date;
 }
}
以及用于保存到数据库的主类:

@Entity
public class Account extends SuperBean {
//other var...
}
房间插入DAO:

 @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insertFromServer(Account account);

我使用JSON将数据保存到具有save id的room数据库,在此之前,我清除account表,但需要添加room认为具有id的已保存对象。

选项-1:
SuperBean
实体中的
id
中删除
自动生成=true

@Entity
public class SuperBean implements Serializable {
    @PrimaryKey
    public long id;

    ...
}
@Entity
public class SuperBean implements Serializable {
    @PrimaryKey(autoGenerate = true)
    public long _id;

    public long id;

    ...
}
选项-2:自动生成使用另一个变量,如
\u id
,并保持所需的
id
SuperBean
实体中的状态

@Entity
public class SuperBean implements Serializable {
    @PrimaryKey
    public long id;

    ...
}
@Entity
public class SuperBean implements Serializable {
    @PrimaryKey(autoGenerate = true)
    public long _id;

    public long id;

    ...
}

我需要为其他内容自动生成。然后使用其他变量,如
autoId
\u id
。检查我的最新答案这就像清除问题一样,我的服务器和客户端都使用同一个类作为对象对数据库性能产生额外的col影响使用
autoGenerate=true
无法保持您的服务器
id
。您必须遵循上述任何一个选项。没有别的办法。autoGenerate=true表示您对它没有任何控制权,SQLite可以处理它