请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

客户端Session表主键问题

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

正在回答 回答被采纳积分+3

1回答

Qiujuer 2021-08-05 15:48:27

其实吧,不太可能撞id;只要保证生产流程正确就不会。联合主键可以的在DbFlow的官方上有,但如果真的需要这么做;其实可以将id异化一下,将用户id和群id拼接一起即可。

但,还是提醒一下,其实不会撞,除非生产id的流程出错了。

0 回复 有任何疑惑可以回复我~
  • 提问者 Lolita_tower #1
    考虑过主键的拼接,但是觉得不太优雅哈哈。
    确实是几乎不会撞,学习的时候总想多做一些吧,我去看一下dbflow的文档。
    老师的课程非常棒,学到了很多设计思想,感谢您为安卓社区做出的贡献。
    回复 有任何疑惑可以回复我~ 2021-08-05 17:24:04
  • Qiujuer 回复 提问者 Lolita_tower #2
    感谢感谢~~
    回复 有任何疑惑可以回复我~ 2021-08-17 22:40:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信