1:N-将N中的两个变量映射到“ 1”中的一个变量

时间:2018-10-30 20:45:37

标签: java database hibernate

我的应用提供了群聊或私人聊天。 我在数据库中区分了这两个。

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(转换表)的这种不良设计? -在这种情况下,您将如何处理?

感谢帮助!

0 个答案:

没有答案