我正在使用Spring、Hibernate和JPA构建一个聊天应用程序,我需要两个表 - chats 和 messages。Chat将有许多消息,还有id、user_first和user_second。目前我正在使用一个复合主键来完成这个任务,其中复合部分为user_first和user_second,id是唯一的自动递增:
public class ChatPK implements Serializable {
protected int firstUser;
protected int secondUser;
...
@Entity
@IdClass(ChatPK.class)
@Table(name = "chats1")
public class Chat implements Serializable {
@Id
private int firstUser;
@Id
private int secondUser;
@Column(name = "id", unique = true, nullable = false, insertable = false, updatable = false)
@GeneratedValue(strategy= GenerationType.IDENTITY)
private int id;
...
有没有更好的方法来做这件事,为什么?
更新:聊天是两个人之间的唯一行,不能有相同两个用户的两个聊天。我想获取所有需要的消息以及发送这些消息的两个用户,这样我就可以将发送者ID放入哈希映射键中,将消息放入值中。对于下面的答案,SessionId是与我的chat表不同的东西,而不是我想要实现的不同方式。