⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example-mappings.html

📁 是一个中文的Hibernate库文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
    quantity INTEGER,     primary key (order_id, line_number))create table products (    id BIGINT not null generated by default as identity,     serialNumber VARCHAR(255),     primary key (id))alter table orders     add constraint ordersFK0 foreign key (customer_id) references customersalter table line_items    add constraint line_itemsFK0 foreign key (product_id) references productsalter table line_items    add constraint line_itemsFK1 foreign key (order_id) references orders</pre></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="misc"></a>24.4.&nbsp;&#26434;&#20363;</h2></div></div><div></div></div><p>            &#36825;&#20123;&#20363;&#23376;&#20840;&#37096;&#26469;&#33258;&#20110;Hibernate&#30340;test suite&#65292;&#21516;&#26102;&#20320;&#20063;&#21487;&#20197;&#25214;&#21040;&#20854;&#20182;&#26377;&#29992;&#30340;&#20363;&#23376;&#12290;            &#21487;&#20197;&#21442;&#32771;Hibernate&#30340;<tt class="literal">src</tt>&#30446;&#24405;&#12290;        </p><p>TODO: put words around this stuff</p><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="example-mappings-typed-onetone"></a>24.4.1.&nbsp;"Typed" one-to-one association</h3></div></div><div></div></div><pre class="programlisting">&lt;class name="Person"&gt;    &lt;id name="name"/&gt;    &lt;one-to-one name="address"             cascade="all"&gt;        &lt;formula&gt;name&lt;/formula&gt;        &lt;formula&gt;'HOME'&lt;/formula&gt;    &lt;/one-to-one&gt;    &lt;one-to-one name="mailingAddress"             cascade="all"&gt;        &lt;formula&gt;name&lt;/formula&gt;        &lt;formula&gt;'MAILING'&lt;/formula&gt;    &lt;/one-to-one&gt;&lt;/class&gt;&lt;class name="Address" batch-size="2"         check="addressType in ('MAILING', 'HOME', 'BUSINESS')"&gt;    &lt;composite-id&gt;        &lt;key-many-to-one name="person"                 column="personName"/&gt;        &lt;key-property name="type"                 column="addressType"/&gt;    &lt;/composite-id&gt;    &lt;property name="street" type="text"/&gt;    &lt;property name="state"/&gt;    &lt;property name="zip"/&gt;&lt;/class&gt;</pre></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="example-mappings-composite-key"></a>24.4.2.&nbsp;Composite key example</h3></div></div><div></div></div><pre class="programlisting">&lt;class name="Customer"&gt;    &lt;id name="customerId"        length="10"&gt;        &lt;generator class="assigned"/&gt;    &lt;/id&gt;    &lt;property name="name" not-null="true" length="100"/&gt;    &lt;property name="address" not-null="true" length="200"/&gt;    &lt;list name="orders"            inverse="true"            cascade="save-update"&gt;        &lt;key column="customerId"/&gt;        &lt;index column="orderNumber"/&gt;        &lt;one-to-many class="Order"/&gt;    &lt;/list&gt;&lt;/class&gt;&lt;class name="Order" table="CustomerOrder" lazy="true"&gt;    &lt;synchronize table="LineItem"/&gt;    &lt;synchronize table="Product"/&gt;        &lt;composite-id name="id"             class="Order$Id"&gt;        &lt;key-property name="customerId" length="10"/&gt;        &lt;key-property name="orderNumber"/&gt;    &lt;/composite-id&gt;        &lt;property name="orderDate"             type="calendar_date"            not-null="true"/&gt;        &lt;property name="total"&gt;        &lt;formula&gt;            ( select sum(li.quantity*p.price)             from LineItem li, Product p             where li.productId = p.productId                 and li.customerId = customerId                 and li.orderNumber = orderNumber )        &lt;/formula&gt;    &lt;/property&gt;        &lt;many-to-one name="customer"            column="customerId"            insert="false"            update="false"             not-null="true"/&gt;            &lt;bag name="lineItems"            fetch="join"             inverse="true"            cascade="save-update"&gt;        &lt;key&gt;            &lt;column name="customerId"/&gt;            &lt;column name="orderNumber"/&gt;        &lt;/key&gt;        &lt;one-to-many class="LineItem"/&gt;    &lt;/bag&gt;    &lt;/class&gt;    &lt;class name="LineItem"&gt;        &lt;composite-id name="id"             class="LineItem$Id"&gt;        &lt;key-property name="customerId" length="10"/&gt;        &lt;key-property name="orderNumber"/&gt;        &lt;key-property name="productId" length="10"/&gt;    &lt;/composite-id&gt;        &lt;property name="quantity"/&gt;        &lt;many-to-one name="order"            insert="false"            update="false"             not-null="true"&gt;        &lt;column name="customerId"/&gt;        &lt;column name="orderNumber"/&gt;    &lt;/many-to-one&gt;        &lt;many-to-one name="product"            insert="false"            update="false"             not-null="true"            column="productId"/&gt;        &lt;/class&gt;&lt;class name="Product"&gt;    &lt;synchronize table="LineItem"/&gt;    &lt;id name="productId"        length="10"&gt;        &lt;generator class="assigned"/&gt;    &lt;/id&gt;        &lt;property name="description"         not-null="true"         length="200"/&gt;    &lt;property name="price" length="3"/&gt;    &lt;property name="numberAvailable"/&gt;        &lt;property name="numberOrdered"&gt;        &lt;formula&gt;            ( select sum(li.quantity)             from LineItem li             where li.productId = productId )        &lt;/formula&gt;    &lt;/property&gt;    &lt;/class&gt;</pre></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="example-mappings-content-discrimination"></a>24.4.3.&nbsp;Content based discrimination</h3></div></div><div></div></div><pre class="programlisting">&lt;class name="Person"    discriminator-value="P"&gt;        &lt;id name="id"         column="person_id"         unsaved-value="0"&gt;        &lt;generator class="native"/&gt;    &lt;/id&gt;                    &lt;discriminator         type="character"&gt;        &lt;formula&gt;            case                 when title is not null then 'E'                 when salesperson is not null then 'C'                 else 'P'             end        &lt;/formula&gt;    &lt;/discriminator&gt;    &lt;property name="name"         not-null="true"        length="80"/&gt;            &lt;property name="sex"         not-null="true"        update="false"/&gt;        &lt;component name="address"&gt;        &lt;property name="address"/&gt;        &lt;property name="zip"/&gt;        &lt;property name="country"/&gt;    &lt;/component&gt;        &lt;subclass name="Employee"         discriminator-value="E"&gt;            &lt;property name="title"                length="20"/&gt;            &lt;property name="salary"/&gt;            &lt;many-to-one name="manager"/&gt;    &lt;/subclass&gt;        &lt;subclass name="Customer"         discriminator-value="C"&gt;            &lt;property name="comments"/&gt;            &lt;many-to-one name="salesperson"/&gt;    &lt;/subclass&gt;    &lt;/class&gt;</pre></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="example-mappings-association-alternatekeys"></a>24.4.4.&nbsp;Associations on alternate keys</h3></div></div><div></div></div><pre class="programlisting">&lt;class name="Person"&gt;        &lt;id name="id"&gt;        &lt;generator class="hilo"/&gt;    &lt;/id&gt;        &lt;property name="name" length="100"/&gt;        &lt;one-to-one name="address"         property-ref="person"        cascade="all"        fetch="join"/&gt;        &lt;set name="accounts"         inverse="true"&gt;        &lt;key column="userId"            property-ref="userId"/&gt;        &lt;one-to-many class="Account"/&gt;    &lt;/set&gt;        &lt;property name="userId" length="8"/&gt;&lt;/class&gt;&lt;class name="Address"&gt;    &lt;id name="id"&gt;        &lt;generator class="hilo"/&gt;    &lt;/id&gt;    &lt;property name="address" length="300"/&gt;    &lt;property name="zip" length="5"/&gt;    &lt;property name="country" length="25"/&gt;    &lt;many-to-one name="person" unique="true" not-null="true"/&gt;&lt;/class&gt;&lt;class name="Account"&gt;    &lt;id name="accountId" length="32"&gt;        &lt;generator class="uuid.hex"/&gt;    &lt;/id&gt;        &lt;many-to-one name="user"        column="userId"        property-ref="userId"/&gt;        &lt;property name="type" not-null="true"/&gt;    &lt;/class&gt;</pre></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="example-weblog.html">&#19978;&#19968;&#39029;</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="index.html">&#19978;&#19968;&#32423;</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="best-practices.html">&#19979;&#19968;&#39029;</a></td></tr><tr><td width="40%" align="left" valign="top">&#31532;&nbsp;23&nbsp;&#31456;&nbsp;&#31034;&#20363;&#65306;Weblog &#24212;&#29992;&#31243;&#24207;&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">&#36215;&#22987;&#39029;</a></td><td width="40%" align="right" valign="top">&nbsp;&#31532;&nbsp;25&nbsp;&#31456;&nbsp;&#26368;&#20339;&#23454;&#36341;(Best Practices)</td></tr></table></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -