我的应用提供了群聊或私人聊天。 我在数据库中区分了这两个。
group ( members are in m:n join table )
| id | some info |
private_ch:
| id | user1 | user2 |
message:
| id | ...... | group | private_ch|
如果邮件属于组,则private_ch为null,反之亦然。
但是,将其映射到休眠状态需要两个变量由另一个表中的一个变量映射
例如
@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类中的两个冗余会话列表。还有其他方法可以做到这一点,还是DB(转换表)的这种不良设计? -在这种情况下,您将如何处理?
感谢帮助!