collections.html
来自「是一个中文的Hibernate库文档」· HTML 代码 · 共 521 行 · 第 1/5 页
HTML
521 行
<id name="id"> <generator class="sequence"/> </id> <set name="children"> <key column="parent_id"/> <one-to-many class="Child"/> </set> </class> <class name="Child"> <id name="id"> <generator class="sequence"/> </id> <property name="name"/> </class></hibernate-mapping></pre><p> 在以下的表定义中反应了这个映射关系: </p><pre class="programlisting">create table parent ( id bigint not null primary key )create table child ( id bigint not null primary key, name varchar(255), parent_id bigint )alter table child add constraint childfk0 (parent_id) references parent</pre><p> 如果父亲是<span class="emphasis"><em>必须</em></span>的, 那么就可以使用双向one-to-many的关联了: </p><pre class="programlisting"><hibernate-mapping> <class name="Parent"> <id name="id"> <generator class="sequence"/> </id> <set name="children" inverse="true"> <key column="parent_id"/> <one-to-many class="Child"/> </set> </class> <class name="Child"> <id name="id"> <generator class="sequence"/> </id> <property name="name"/> <many-to-one name="parent" class="Parent" column="parent_id" not-null="true"/> </class></hibernate-mapping></pre><p> 请注意<tt class="literal">NOT NULL</tt>的约束: </p><pre class="programlisting">create table parent ( id bigint not null primary key )create table child ( id bigint not null primary key, name varchar(255), parent_id bigint not null )alter table child add constraint childfk0 (parent_id) references parent</pre><p> 另外,如果你绝对坚持这个关联应该是单向的,你可以对<tt class="literal"><key></tt>映射声明<tt class="literal">NOT NULL</tt>约束: </p><pre class="programlisting"><hibernate-mapping> <class name="Parent"> <id name="id"> <generator class="sequence"/> </id> <set name="children"> <key column="parent_id" not-null="true"/> <one-to-many class="Child"/> </set> </class> <class name="Child"> <id name="id"> <generator class="sequence"/> </id> <property name="name"/> </class></hibernate-mapping></pre><p> 另外一方面,如果一个子实例可能有多个父实例, 那么就应该使用many-to-many关联: </p><pre class="programlisting"><hibernate-mapping> <class name="Parent"> <id name="id"> <generator class="sequence"/> </id> <set name="children" table="childset"> <key column="parent_id"/> <many-to-many class="Child" column="child_id"/> </set> </class> <class name="Child"> <id name="id"> <generator class="sequence"/> </id> <property name="name"/> </class></hibernate-mapping></pre><p> 表定义: </p><pre class="programlisting">create table parent ( id bigint not null primary key )create table child ( id bigint not null primary key, name varchar(255) )create table childset ( parent_id bigint not null, child_id bigint not null, primary key ( parent_id, child_id ) )alter table childset add constraint childsetfk0 (parent_id) references parentalter table childset add constraint childsetfk1 (child_id) references child</pre><p> 更多的例子,以及一个完整的父/子关
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?