Мое приложение предлагает групповой или приватный чат.
Я различаю эти два в моей БД.
group ( members are in m:n join table )
| id | some info |
private_ch:
| id | user1 | user2 |
message:
| id | ...... | group | private_ch|
Если сообщения принадлежат группе, private_ch имеет значение null и наоборот.
Однако для отображения этого в спящий режим требуется, чтобы две переменные были сопоставлены одной переменной в другой таблице
1008 * например *
@Entity
class converstaion{
private User userOne;
private User userTwo;
@ManyToOne
@JoinCollumn(name="user1")
// getter and setter for userOne
@ManyToOne
@JoinCollumn(name="user2")
// getter and setter for userTwo
}
@Entity
class User{
//
@OneToMany(mappedBy = "user1")
private List<Conversation> userOneConversation
@OneToMany(mappedBy = "user2")
private List<Conversation> userTwoConversation
}
Как вы можете видеть, для этого потребуется два избыточных Списка разговоров в классе User. Есть ли другой способ, как это сделать, или это плохой дизайн БД (разговорная таблица)? - в таком случае как бы вы подошли к этому?
Спасибо за помощь!