我正在尝试保留我的数据,但是我无法想出一个能够以理智的方式为hibernate工作的架构
我有两个对象:频道和用户。用户与频道相关联,但在很多方面。它可以有5种特殊状态(可以分配多个)或者是正常状态。由于它有多对多的关系(用户可以在多个频道,而频道有多个用户),这个问题很复杂。
我的想法是拥有单独的频道和用户表,但有第三张大地图表。这个大的地图表看起来像这样
--------------------------------------------------------------------------
| CHANNEL_ID | USER_ID | STATUS1 | STATUS2 | STATUS3 | STATUS4 | STATUS5 |
--------------------------------------------------------------------------
| 5 | 10 | 0 | 1 | 0 | 0 | 0 |
--------------------------------------------------------------------------
请注意,如果新用户加入频道,则会获得新行。但是,如果它们获得新状态,则会更改其现有行。
真正令我困惑的是如何在Hibernate中实现类似的东西。我有这样的东西,但我一直玩这么久(现在2天)我甚至不知道它的作用了。
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "quackbot_user_map", joinColumns = {
@JoinColumn(name = "USER_ID")}, inverseJoinColumns = {
@JoinColumn(name = "STATUS1")})
protected Set<UserDAOHb> status1s;
答案 0 :(得分:1)
如果您想要映射该设计,则需要第三个实体,我将其称为Participation
。
但更常规(当然也更容易查询)的设计方法是让参与实体只有一个状态,并为每个用户 - 频道 - 状态元组创建一个Participation
实例。如果你考虑一下,如果可能的状态数量要大得多(或根本没有固定的话),它将是唯一可能的映射(据我所知)。