Я создаю приложение чата для Spring, Hibernate и JPA, и мне нужны две таблицы - чаты и сообщения.В чате будет много сообщений, а также 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;
...
Есть ли лучший способ сделать это и почему?
Обновление: чат является уникальной строкой между двумя людьми, не может быть двух чатов с теми же двумя пользователями.Я хочу взять все нужные мне сообщения вместе с двумя пользователями, у которых были эти сообщения, чтобы я мог поместить идентификатор отправителя в ключ хэш-карты, а сообщения - в значение.К ответу ниже SessionId - это не то, что делает мой настольный чат, а не способ реализовать то, что я хочу.