解决了在hibernate中收集依赖对象的限制

依赖集合的hibernate文档说:

对于双向关联导航,不能在另一方面参考购买。 组件是值类型,不允许共享引用。 单个Purchase可以在Order的集合中,但Item不能同时引用它。

有人可以帮我理解这个吗?

1)为什么hibernate限制了另一方的购买参考?

2)为什么它不允许共享引用?

3)项目不能同时引用单次购买是什么意思。

有人可以用一些例子解释一下。

为了解释这一点,我将从doc的另一个例子开始:

  • 7.3.1。 排序集合

代码段显示了字符串集合的映射:

    

在这种情况下,我们有一aliases ,表示为List ,用映射。

我们可以清楚地看到,这里的每个元素(别名)都是一个string – 值类型(与Reference类型相反的含义) 。 我们也不希望系统中有任何进一步的位置, 引用这个元素……
因为它不是 Refeence类型

现在,让我们转到:

  • 9.2。 依赖对象的集合

我们看到的是一个例子, (非常)相似,但是它不是 ,而是使用

           

虽然对于string我们在Java (字符串)中有相关对象 – 对于上面的构造,我们确实需要自定义类型。 这将是一个class Pruchase {}

但即使这是一个自定义类型 – 我们自己的类,在这种情况下它表示为值类型(再次,与参考类型相反)

为什么? 因为它没有任何id,任何键 – 都要引用。 它是从Domain建模的角度构建的。 也许这个文档的引用可以帮助更多:

与值类型一样,组件不支持共享引用。 换句话说,两个人可以具有相同的名称,但是两个人对象将包含两个独立的名称对象,这些名称对象仅按值“相同”。

最后:

这是一个function。 我们可以使用事实并不意味着我们必须这样做。 我们仍然可以将Purchase类映射为 ,将Purchase类转换为一级公民。 然后所有标准的东西都会再次起作用 – 因为它代表了一个参考类型 ……