客户端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的流程出错了。

0
2
Qiujuer
回复
Lolita_tower
感谢感谢~~
2021-08-17
共2条回复

手把手开发完整的即时通讯App 客户端+服务端+MVP架构

客户端+服务端+MVP架构+封装思想+主流框架

1749 学习 · 872 问题

查看课程