【发布时间】:2018-05-22 23:10:55
【问题描述】:
当主键是自动生成的字段时,我不确定使用 Android 房间持久性库插入返回的值。
假设你有一个这样的房间实体:
@Entity()
public class Message {
@PrimaryKey(autoGenerate = true)
public long id;
public String text;
}
还有一个像这样的 Dao 接口:
@Dao
public interface MessageDao {
@Insert
long insert(Message messages);
@Update
void update(Message... messages);
}
我创建了一个 Message 实例,然后像这样持久化它:
Message message = new Message();
message.text = "Hello!"
long rowId = AppDatabase.getInstance(context).messageDao().insert(message);
insert() 返回的 rowid 值是否总是等于 Room 分配给主键字段“id”的值,还是可以不同?
换句话说,“id”字段是否是底层 SQLite 表的 rowid 列的别名?
如果它们是别名,我可以将 rowid 值存储在我的“id”字段中,以供将来使用(例如更新),这样:
message.id = rowId;
message.text = "Goodbye!"
AppDatabase.getInstance(context).messageDao().update(message);
如果他们不是别名,我该怎么做?
【问题讨论】:
标签: android-room