客户端Session表主键问题
来源:8-1 浅析数据流封装的难点与必要性
Lolita_tower
2021-08-03
Session表的主键Id为消息的接收人Id或接收群Id
这样有比较小的可能撞Id,能否把Id和接受者类型设置为联合主键,如果可以的话应该怎样操作
public class Session extends BaseModel implements DiffUiDataCallback.UiDataDiffer<Session> {
@PrimaryKey
private String id; // Id, 是Message中的接收者User的Id或者群的Id
@Column
private String picture; // 图片,接收者用户的头像,或者群的图片
@Column
private String title; // 标题,用户的名称,或者群的名称
@Column
private String content; // 显示在界面上的简单内容,是Message的一个描述
@Column
private int receiverType = Message.RECEIVER_TYPE_NONE; // 类型,对应人,或者群消息
@Column
private int unReadCount; // 未读数量,当没有在当前界面时,应当增加未读数量
@Column
private Date modifyAt; // 最后更改时间
@ForeignKey(tableClass = Message.class)
private Message message; // 对应的消息,外键为Message的Id
写回答
1回答
-
Qiujuer
2021-08-05
其实吧,不太可能撞id;只要保证生产流程正确就不会。联合主键可以的在DbFlow的官方上有,但如果真的需要这么做;其实可以将id异化一下,将用户id和群id拼接一起即可。
但,还是提醒一下,其实不会撞,除非生产id的流程出错了。
022021-08-17
相似问题