多对一(many to one)单向many-to-one关联是最常见的单向关联关系。 一对一(one to one)基于外键关联的单向一对一关联和单向多对一关联几乎是一样的。唯一的不同就是单向一对一关联中的外键字段具有唯一性约束。 基于主键关联的单向一对一关联通常使用一个特定的id生成器。一对多(one to many)基于外键关联的单向一对多关联是一种很少见的情况,并不推荐使用。 一对多(one to many)基于连接表的单向一对多关联 应该优先被采用。请注意,通过指定unique="true" 可以把多样性从多对多改变为一对多 多对一(many to one)基于连接表的单向多对一关联在关联关系可选的情况下应用也很普遍。 一对一(one to one)基于连接表的单向一对一关联非常少见,但也是可行的。 一对多(one to many) / 多对一(many to one)双向多对一关联 是最常见的关联关系。(这也是标准的父/子关联关系。) 如果你使用List(或者其他有序集合类),你需要设置外键对应的key列为 not null,让Hibernate来从集合端管理关联,维护每个元素的索引(通过设置update="false" and insert="false"来对另一端反向操作)。 假若集合映射的<key>元素对应的底层外键字段是NOT NULL的,那么为这一key元素定义not-null="true"是很重要的。不要仅仅为可能的嵌套<column>元素定义not-null="true",<key>元素也是需要的。
基于主键关联的单向一对一关联通常使用一个特定的id生成器。一对多(one to many)基于外键关联的单向一对多关联是一种很少见的情况,并不推荐使用。 一对多(one to many)基于连接表的单向一对多关联 应该优先被采用。请注意,通过指定unique="true"
可以把多样性从多对多改变为一对多 多对一(many to one)基于连接表的单向多对一关联在关联关系可选的情况下应用也很普遍。 一对一(one to one)基于连接表的单向一对一关联非常少见,但也是可行的。
一对多(one to many) / 多对一(many to one)双向多对一关联 是最常见的关联关系。(这也是标准的父/子关联关系。) 如果你使用List(或者其他有序集合类),你需要设置外键对应的key列为 not null,让Hibernate来从集合端管理关联,维护每个元素的索引(通过设置update="false" and insert="false"来对另一端反向操作)。 假若集合映射的<key>元素对应的底层外键字段是NOT NULL的,那么为这一key元素定义not-null="true"是很重要的。不要仅仅为可能的嵌套<column>元素定义not-null="true",<key>元素也是需要的。
只能通过A查询B,或者B查询A双向:
既可以通过A查询B,也可以通过B查询A