根据Bidirectional associations - 8.4.1. one-to-many / many-to-one的Hibernate文档,声明如下:
如果使用List或其他索引集合,请设置键列 外键不为null。 Hibernate将管理关联 从集合方面来维护每个元素的索引, 通过设置update =“false”来使对方实际上是反向的 插入= “假”
如果底层外键列为NOT NULL,则重要的是 你在集合的元素上定义not-null =“true” 映射。不要在可能的嵌套上声明not-null =“true” 元素,但在元素上。
我正在浏览文档以了解Hibernate,但我不清楚以上语句。我几乎没有怀疑:
1)If you use a List, or other indexed collection, set the key column of the foreign key to not null
- 为什么我要将外键设置为not-null
,这是强制性的吗?
2)making the other side virtually inverse by setting update="false" and insert="false"
- 我们应该何时设置update="false" and insert="false"
以及如果我不设置会发生什么?
insert
和update
的目的也是documentation(第5.1.4.2节。使用hbm.xml进行属性映射):
update,insert(可选 - 默认为true):指定 映射列应包含在SQL UPDATE和/或INSERT中 声明。将两者都设置为false允许纯粹的“派生”属性 其值是从映射到的其他属性初始化的 相同的列,或通过触发器或其他应用程序。
因此,如果我没有任何其他属性映射到同一列或触发器,那么为什么我们需要将它们设置为false
?
3)当文档说:Do not only declare not-null="true" on a possible nested <column> element, but on the <key> element.
请帮助我理解这些。提前谢谢。