我对两个哈希集合的多重关系感到困惑,
从我在这里的另一篇文章中看到的,
HashSet是一个集合,例如{1,2,3,4,5}
HashMap是一个关键 - >值(键值)映射,例如{a - > 1,b - > 2,c - > 2,d - > 1}
这看起来像hashset是一个绑定到一组数据的唯一ID,例如。 1 2 3 4 5.看起来像是一对多的关系
hashMap是1个值的1个键,它是一对一的关系
在谷歌搜索确认我的怀疑之后,我最终感到困惑。 在这篇文章中,https://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html/collections.html
它显示了在一对多和多对多关系中使用的hashset, 有帖子显示两者都使用的hashmap。
可以在一对多和多对多关系中使用HashSet和HashMap吗?
答案 0 :(得分:1)
谈论他们打算使用的实际方式,不! 对于关系A-> B
然而,当我需要创建“一对多”关系时,我求助于
HashMap<A,HashSet<B>>
这样做会对关系源强制执行唯一约束。为避免这种情况,可以使用HashMap反向映射它
HashMap<B,A>
在多对多关系中,没有一个唯一键可用于访问一对元素。所以这基本上意味着整个数据集只是一个数据对列表。
List<{A,HashSet<B>}>
WrapperObject具有属性标识符,HashSet&lt;&gt;。 这里的标识符不一定是唯一的。
如果您正在使用@ManyToMany注释,Spring / Ebean在内部使用它,您不必担心表示映射,因为它在帖子的示例中可见。您需要从单个实例的角度设置映射。
为您自动处理整个实例数组。